
勘定奉行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は分かりません(^^;
No.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
ありがとうございます!まさにその「空白のセルは無視する」的なところが分からなかったんです。うまくいきました。意味の分からない部分ばかりですが…、勉強していこうと思います。すごく役にたちました。ありがとうございました(^^)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
エクセル マクロ 範囲指定で...
-
Excelの行数、列数を増やしたい...
-
VBAで結合セルを転記する法を教...
-
vba マージエリアの行数を非表...
-
エクセル 文字列を日付に変更...
-
エクセル 1つのシートを日付で...
-
横軸を日付・時間とするグラフ化
-
リストからデータを紐付けしたい
-
VBA Splitで「引数の数が一致...
-
Excel 区切り位置指定ウィザー...
-
列方向、行方向の定義
-
Excel文字列一括変換
-
VBA 指定した列にある日時デー...
-
エクセルで最初の行や列を開け...
-
Alt+Shift+↑を一括で行うには、...
-
【マクロ】実行時エラー '424':...
-
エクセル 上下で列幅を変えるには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
Excelの行数、列数を増やしたい...
-
VLOOKUPの列番号の最大は?
-
vba マージエリアの行数を非表...
-
列方向、行方向の定義
-
VBA 指定した列にある日時デー...
-
エクセル マクロ 範囲指定で...
-
Alt+Shift+↑を一括で行うには、...
-
LEFT関数とIF関数の組み合わせ...
-
横軸を日付・時間とするグラフ化
-
Excel文字列一括変換
-
VBAで結合セルを転記する法を教...
-
最近急にVBAの処理速度が遅くな...
-
EXCEL VBA 文字列から電話番号...
-
CSVファイルの「0落ち」にVBA
-
VBAで別ブックの列を検索し、該...
-
リストからデータを紐付けしたい
-
エクセルで最初の行や列を開け...
-
ListViewで列を指定して表示さ...
おすすめ情報