• ベストアンサー

文字列を日付データに変換 マクロ

他の方の質問等を参考にしているのですが、どうもうまくいかないので教えてください。 エクセル2007を使ってるのですが、 マクロで文字認識している日付を日付データ認識させたいのです。 H10.1.4やH19.12.14等が2000件くらい文字列として入力されている データを日付認識させて、経過年数や経過日数などを求めようと思ってます。 マクロで一括変換する方法または、変換した日付データを隣の列に入力できる方法がございましたら教えて頂きたく思います。 お願いします。

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

  • ベストアンサー
  • goo793ww
  • ベストアンサー率80% (8/10)
回答No.3

こんなので如何でしょうか? 課題のデータは「A1:A2000」に在るものとし、結果を隣の「B列」に出力してみました。 Sub 日付返還() '▽初期化(変換結果出力場所) Columns("B:B").ClearContents Columns("B:B").NumberFormatLocal = "G/標準" Range("A1").Select '▼Case1:日付返還の式埋め込み(データが2000行の場合) 'Range("B1:B2000").FormulaR1C1 = "=DATEVALUE(RC[-1])" '▼Case2:日付返還の式埋め込み(データ最終行を自動取得) Range("B1", "B" & Cells(Rows.Count, 1).End(xlUp).Row).FormulaR1C1 = "=DATEVALUE(RC[-1])" Range("A1").Select '▽セルの書式設定(表示形式:和暦) Range("B:B").NumberFormatLocal = "[$-411]ge.m.d;@" Range("C1").Select '▽式排除(コピー値張付け) Columns("B:B").Copy Columns("B:B").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Range("A1").Select End Sub

その他の回答 (4)

  • myRange
  • ベストアンサー率71% (339/472)
回答No.5

回答はいくつか出てますが、一言。 >普通は日付認識するはずなのですが、 >書式をYYYYY/MM/DDにしても変化しないのです。 >一度F2を押して編集状態にして戻すと日付データとして認識するのですが 今回のように文字列のセルに既に数値(日付も数値)が力されている場合に 表示形式を変えてもその値は文字列のままです。 それを【ほんとの数値】に変換するためには 質問者がやったように再編集(再入力)しないといけません。 それをマクロでやるとすると次のようになります。 '-------------------------------- Sub test()   Range("A:A").NumberFormatLocal = "ge.m.d"   Range("A:A").Value = Range("A:A").Value End Sub '-------------------------------- 以上です。

回答No.4

ま、ここで質問をしている間にも手作業を行っていて、今はすでに作業を終えているかもしれませんが。。。 > 一度F2を押して編集状態にして戻すと日付データとして認識するのですが、2000件ものデータをすべて行うのは厳しいため、 > 一度にできる方法はないかと思いまして。 A列に文字列として認識されている日付データーが書いてあるとして、 1. B列の書式を日付形式にする。 2. B1の式を =DATEVALUE(A1) と。 3. セル B1 の右下のハンドルをダブルクリックして、最後の行まで一気に。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

VBAとしては ★IsDate(文字列) 文字列が日付として認識できればTrue、できなければFalse ★CDate(文字列) 文字列を日付型に変換する。文字列が日付として認識できない 場合はエラーになる などがあります。 でも、#1さんの言うように、列の書式を変更するだけで 済む話のような気がします。

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

>H10.1.4やH19.12.14 これなら普通に日付形式で認識しますけど。隣の列に=A1とか入力して、セルの書式設定で日付形式か、ユーザ定義で、YYYYY/MM/DDとかに設定すれば。

niki2010
質問者

補足

普通は日付認識するはずなのですが、 書式をYYYYY/MM/DDにしても変化しないのです。 一度F2を押して編集状態にして戻すと日付データとして認識するのですが、2000件ものデータをすべて行うのは厳しいため、 一度にできる方法はないかと思いまして。

関連するQ&A