質問: エクセル 文字列を日付に変更したい 勘定奉行21を使っています。 総勘定元帳をエクセルにエクスポートして、編集することが多いのですが、日付が文字列になってしまって困っています。これを正しい日付として認識させたいです。 エクセルに出力される日付の例 16 430 16 8 1 161020 など、和暦で表示されていて、月日は一桁の場合は半角スペースが入るようになっています。 スペースが入っているものは文字列として、3番目のようにスペースがないものについては161020という数値として認識されます。 現在行っている方法 a列に上記が入っているとして、b列に数式を入れます。 1)a列を選択し、置換えで半角スペースを"0"(ゼロ)にします。 2)b列に空白の列を挿入します。 3)b列に以下の式を入れ、下までコピーします。 =if(a6="","",datevalue("h"&mid(a6,1,2)&"/"&mid(a6,3,2)&"/"&mid(a6,5,2))) 4)b列を書式を選択して貼り付けで値にします。 5)a列を削除します。 6)a列の書式設定でユーザー設定「ge.mm.dd」と入れます。 ※b列より右側には15行ほど他のデータが入っています。 ※この日付がa6から下へ続いているのは毎回同じなのですが、出力する時によって全体の行数は増減します。 ※数式のif部分については、値の貼り付けにした時に、エラーが残ってしまうので入れてあります。 ※h16.01.20の様な表示形式にしたいです。 今のことろは、上記をマクロで記録して、貼り付け用のシートを作って毎回使えば良いか...と考えているのですが、どうもスマートな気がしません。 他に何か良い方法が思いつく方がいらっしゃいましたら、宜しくお願い致します。 ちなみにvbaは分かりません(^^;
回答: ファイル名:book1.xls、シート名:sheet1と仮定。 データを、a1を始点に貼り付けて、以下のをマクロを実行すると上手くいきませんか? sub test() dim wbthis as workbook dim wsthis as worksheet dim l as integer dim rdata as range dim hiz as date set wbthis = workbooks("book1.xls") set wsthis = wbthis.worksheets("sheet1") wsthis.range("a:a").replace what:=" ", replacement:="0", lookat:=xlpart, searchorder:=xlbyrows, matchcase:=true, matchbyte:=true for l = 1 to wsthis.range("a1").end(xldown).row set rdata = wsthis.cells(l, 1) if rdata.value <> "" then hiz = datevalue("h" & mid(rdata.value, 1, 2) & "/" & mid(rdata.value, 3, 2) & "/" & mid(rdata.value, 5, 2)) rdata.value = format(hiz, "ge.mm.dd") next end sub