[[20110909160457]] 『日付と期間の混じったデータの並べ替え方法』(こば) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『日付と期間の混じったデータの並べ替え方法』(こば)

初めまして。こば、と申します。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.