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

他の方の質問等を参考にしているのですが、どうもうまくいかないので教えてください。

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

お願いします。

A 回答 (5件)

こんなので如何でしょうか?


課題のデータは「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
    • good
    • 0

回答はいくつか出てますが、一言。



>普通は日付認識するはずなのですが、
>書式をYYYYY/MM/DDにしても変化しないのです。
>一度F2を押して編集状態にして戻すと日付データとして認識するのですが

今回のように文字列のセルに既に数値(日付も数値)が力されている場合に
表示形式を変えてもその値は文字列のままです。
それを【ほんとの数値】に変換するためには
質問者がやったように再編集(再入力)しないといけません。

それをマクロでやるとすると次のようになります。

'--------------------------------
Sub test()
  Range("A:A").NumberFormatLocal = "ge.m.d"
  Range("A:A").Value = Range("A:A").Value
End Sub
'--------------------------------

以上です。
    • good
    • 1

ま、ここで質問をしている間にも手作業を行っていて、今はすでに作業を終えているかもしれませんが。

。。

> 一度F2を押して編集状態にして戻すと日付データとして認識するのですが、2000件ものデータをすべて行うのは厳しいため、
> 一度にできる方法はないかと思いまして。

A列に文字列として認識されている日付データーが書いてあるとして、
1. B列の書式を日付形式にする。
2. B1の式を =DATEVALUE(A1) と。
3. セル B1 の右下のハンドルをダブルクリックして、最後の行まで一気に。
    • good
    • 0

VBAとしては



★IsDate(文字列)
文字列が日付として認識できればTrue、できなければFalse
★CDate(文字列)
文字列を日付型に変換する。文字列が日付として認識できない
場合はエラーになる

などがあります。
でも、#1さんの言うように、列の書式を変更するだけで
済む話のような気がします。
    • good
    • 0

>H10.1.4やH19.12.14


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

この回答への補足

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

補足日時:2010/03/23 16:06
    • good
    • 0

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