- ベストアンサー
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 とやっていますが量が多くて追いつけません。 ご教授よろしくお願いします。
- みんなの回答 (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 で、はさんだほうが良いかもしれません。
その他の回答 (2)
- hige_082
- ベストアンサー率50% (379/747)
二例ほど 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
お礼
大変参考になりました! ありがとうございます。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
マクロはわかりませんが その列を選択して データ - 区切り位置 カンマや~~ [次へ] - [次へ] 列のデータ形式 日付YMD - [完了] でどうでしょうか?
お礼
できました。 これをマクロの記録でとって編集して行きたいと思います。 ありがとうございます。
お礼
自分でコードを考えてみたのですが難しくて挫折しました! ありがとうございます。大変参考になりました。