• ベストアンサー

CSVファイルの「20090423」を日付型の「2009/4/23」へ変換したい

CSVファイルには書式設定が標準で「20090423」と入力されていますが これを日付型の「2009/4/23」へ変換したいのですがどうすればいいでしょうか? 現在は With Columns(1) .Replace what:="200809", Replacement:="2008/09/", LookAt:=xlPart .Replace what:="200810", Replacement:="2008/10/", LookAt:=xlPart .Replace what:="200811", Replacement:="2008/11/", LookAt:=xlPart .Replace what:="200812", Replacement:="2008/12/", LookAt:=xlPart .Replace what:="200901", Replacement:="2009/01/", LookAt:=xlPart .Replace what:="200902", Replacement:="2009/02/", LookAt:=xlPart End With とやっていますが量が多くて追いつけません。 ご教授よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 区切り位置の回答が出ていますので、こちらもマクロの処理を出します。A列を対象とした場合です。 Sub Test1() For Each c In Range("A1", Range("A65536").End(xlUp))  If IsNumeric(c.Value) And Len(c.Value) > 5 Then     c.Value = Format(c.Value, "00""/""00""/""00")  End If Next c End Sub Sub Test2()   Range("A1", Range("A65536").End(xlUp)).TextToColumns _     DataType:=xlDelimited, _     FieldInfo:=Array(1, 5) End Sub 書式は任意で処理してください。マクロで入れる場合は、その都度変更するのではなく、一括で書式を入れてください。メモリの負担が少ないです。 Test1 は、処理のコードを  Application.ScreenUpdating = False    Application.ScreenUpdating = True で、はさんだほうが良いかもしれません。

5tgbhy
質問者

お礼

自分でコードを考えてみたのですが難しくて挫折しました! ありがとうございます。大変参考になりました。

その他の回答 (2)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

二例ほど Sub test1() Dim i Dim myDate i = 20090423 myDate = Left(i, 4) & "/" & Mid(i, 5, 2) & "/" & Right(i, 2) MsgBox myDate End Sub Sub test2() Dim i Dim myDate i = 20090423 myDate = Evaluate("TEXT(DATE(LEFT(" & i & ",4),MID(" & i & ",5,2),RIGHT(" & i & ",2)),""yyyy/mm/dd"")") MsgBox myDate End Sub

5tgbhy
質問者

お礼

大変参考になりました! ありがとうございます。

回答No.1

マクロはわかりませんが その列を選択して データ - 区切り位置 カンマや~~ [次へ] - [次へ] 列のデータ形式 日付YMD - [完了] でどうでしょうか?

5tgbhy
質問者

お礼

できました。 これをマクロの記録でとって編集して行きたいと思います。 ありがとうございます。

関連するQ&A

専門家に質問してみよう