[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『日付と期間の混じったデータの並べ替え方法』(こば)
初めまして。こば、と申します。Excel2007, Windows XPを使用しています。
データを日付順に並べ替えたいのですが、日付(2011/4/2, 2011/4/3など)の中に期間(1つのセルの中に2011/4/4〜5/1などと表記されている)を含むデータが含まれており、上手く並べ替えができません。
Excelの書籍等を調べましたが、自分のやりたいことをできる方法が見つかりませんでした。上手く並べ替える方法をご存知でしたら、ご教授下さい。
2011/4/4〜5/1は文字列として入っているんだね。で、通常の2011/4/2等は日付型で入っているとして また、2011/4/4〜5/1 の順番は 2011/4/4 で判断するとして(5/1じゃない) ・日付の列を、右のほうのあいている列にコピー ・コピーした列を対象にしてデータタブのデータ区切り位置(にあったんだよね、2007は) 区切り文字を、【その他】にして 〜 をいれて実行。 ・コピーした列が日付だけになったと思うので、その列でソート。 ・コピーした列をクリア
(ぶらっと)
期間の入ったデータの並べ替え方法を教えていただいてありがとうございました。
ところで、並べ替えのために、別の列を作るのではなく、日付(4/2, 4/3など)と期間(4/4〜5/20など)の混じったデータを昇順、降順で並べ替える方法をご存知でしたら、改めてご教授いただけないでしょうか。どうぞよろしくお願いいたします。m(_ _)m
私にはわかりません。というか、どんなやりかたをするにせよ、作業列が必要なんじゃないかな? 2011/4/2 なんて表示されていても日付型のデータの中身はシリアル値 (2011/4/2 なら40270という「数値」) それを、本当の文字列である2011/4/4〜5/1 なんてものと比較するというのは、そもそも土俵が違う訳なので。 比較というものは一方を他方の基準に変換した上で、同じ土俵にあげないとできないよ。
(ぶらっと)
ぶらっとさんのおっしゃる通りですが、マクロの記録を利用して、 1)日付の列(A列とすると)をコピーして隣の行に挿入 2)コピーした列(B列)を選択して「〜*」を置換 3)B列でソート 4)B列を削除 で、たたき台ができないでしょうか。
無駄なところは省きましたが、こちらで試したのはこんな感じ。 Sub Macro1() Columns("A:A").Copy Columns("B:B").Insert Shift:=xlToRight Columns("B:B").Replace What:="〜*", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False ActiveSheet.Sort.SortFields.Add Key:=Range("B1:B4"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal Columns("B:B").Delete Shift:=xlToLeft End Sub ご参考までに。 (Mook)
日付と文字が混ざっているから、上手く行かないので 全部文字にして、しかもきちんと並ぶように yyyy/mm/dd の形で入力する。
セルの書式設定で表示形式を「文字列」にしてから 2011/04/02 や 2011/04/04〜05/01 を入力すれば 通常の並べ替えが使える様になると思います。
(HANA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.