アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

とやっていますが量が多くて追いつけません。
ご教授よろしくお願いします。

A 回答 (3件)

マクロはわかりませんが その列を選択して


データ - 区切り位置
カンマや~~ [次へ] - [次へ]
列のデータ形式 日付YMD - [完了]
でどうでしょうか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/04/23 23:33

二例ほど



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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/04/23 23:33

こんばんは。



区切り位置の回答が出ていますので、こちらもマクロの処理を出します。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
で、はさんだほうが良いかもしれません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/04/24 00:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!