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

勘定奉行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は分かりません(^^;

A 回答 (1件)

ファイル名: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
    • good
    • 0
この回答へのお礼

ありがとうございます!まさにその「空白のセルは無視する」的なところが分からなかったんです。うまくいきました。意味の分からない部分ばかりですが…、勉強していこうと思います。すごく役にたちました。ありがとうございました(^^)

お礼日時:2004/11/17 16:13

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