人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excelでのデータ処理についての質問です。

まずは、ファイルの<処理前>のデータを見てください。
以下のようになっています。
http://www.filebank.co.jp/wblink/ee0f0e1a428ebe447aba848ab61b02aa

問題は、ひとつのセル内に別の日時のものがまとめて記入されているために、
並べ替えに手間がかかることです。

これを、日時の昇順(つまり日時順)に並べ替えたいのです。
ファイルの<処理後>を見てください。このようにしたいわけです。

簡単に日時順に並べ替える方法は何かないでしょうか。
時間は前後しても構いませんが、最低限日付順に並べかえることが目的です。

よろしくお願いします。


●質問者: ikazuo
●カテゴリ:コンピュータ インターネット
✍キーワード:Excel ひとつ セル データ ファイル
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Mook
●100ポイント ベストアンサー

VBA での処理例です。


サンプルデータを勝手に変更していますが、処理したいデータ(B3:D8)を

左上(A1:C6)につめて実行してみてください。


標準モジュールにおいて実行してみてください。

http://www.bunsugi.ed.jp/vba4graduate/vba_gaisetsu.htm

Sub reformat()
 Dim srcWS As Worksheet
 Set srcWS = ActiveSheet
 
 Dim dstWS As Worksheet
 Set dstWS = Worksheets.Add(before:=Worksheets(1))
 
 srcWS.Range("A1:C1").Copy dstWS.Range("A1:C1")

 Dim lastRow As Long
 lastRow = srcWS.Range("A" & Rows.Count).End(xlUp).Row

 Dim i As Long, j As Long
 Dim ar As Variant
 
 Dim ll As Long
 ll = 2
 For i = 2 To lastRow
 ar = Split(srcWS.Cells(i, "C").Value, vbLf)
 For j = LBound(ar) To UBound(ar)
 dstWS.Cells(ll, "A").Value = srcWS.Cells(i, "A")
 dstWS.Cells(ll, "B").Value = srcWS.Cells(i, "B")
 dstWS.Cells(ll, "C").Value = ar(j)
 dstWS.Cells(ll, "D").Value = getDate(ar(j))
 ll = ll + 1
 Next
 Next
 ll = ll - 1
 With dstWS
 .Columns("A:D").Sort Key1:=.Cells(1, "D"), order1:=xlAscending, Header:=xlYes
 .Columns("D").Delete
 .Columns("C").ColumnWidth = 50
 .Range("A1").Resize(ll, 3).Borders.LineStyle = xlContinuous
 .Range("A1").Resize(ll, 3).Borders.Weight = xlThin
 End With
End Sub

Function getDate(ByVal strDateTime As String) As Date
 Dim yy%, mm%, dd%, ps%, pe%
 strDateTime = Replace(strDateTime, " ", "")
 strDateTime = Replace(strDateTime, " ", "")

 ps = 1
 pe = InStr(strDateTime, "年")
 yy = CInt(Mid(strDateTime, ps, pe - ps))
 
 ps = pe + 1
 pe = InStr(strDateTime, "月")
 mm = CInt(Mid(strDateTime, ps, pe - ps))
 
 ps = pe + 1
 pe = InStr(strDateTime, "日")
 dd = CInt(Mid(strDateTime, ps, pe - ps))

 getDate = DateSerial(yy, mm, dd)
End Function
◎質問者からの返答

ありがとうございました!

URLもありがとうございます。

今回いただいたコードと併せて勉強させていただきます。

こんなに早く解決できて感謝しています。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ