Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Excel 2013)
日付けの変換
投稿日時: 19/07/11 13:43:59
投稿者: shamo

お世話になります。
 
A列に西暦の日付が入力されています。
 
この日付けをこのように変換したいのですがどのようにしたらいいでしょうか。
A1=2019/7/11 →31 711
A2=2019/8/3 →31 8 3
和暦、月、日の値が01〜09の場合
0の部分は半角スペース1つに置き換えます
 
現在は下記関数を使って処理してますが、VBAで処理する方法を探してます。
SUBSTITUTE(SUBSTITUTE(TEXT(セル番地,"[$-411]ee.mm.dd"),".0",". "),".",))
 
Worksheetfunctionを使うのかなと思ったんですが構文エラーがでました
WorksheetFunction.SUBSTITUTE(SUBSTITUTE(TEXT(cells(i,"A").value,"[$-411]ee.mm.dd"),".0",". "),".",))
 
よろしくお願いします。

回答
投稿日時: 19/07/11 13:55:46
投稿者: よろずや

SUBSTITUTE ではなく、Replace関数を使いましょう。

投稿日時: 19/07/11 14:07:13
投稿者: shamo

Replaceも使ってみたんですが
「10」が「1 」ってなってしまいまして、、

回答
投稿日時: 19/07/11 14:11:25
投稿者: Suzu

2019年 7月11日 の 元号としては 令和 となり、 1年 または、元年 となりますが
そもそも、令和ではなく、平成31年 扱いで処理したいのでしょうか?
 
なのであれば、TEXTの「ee」は使用できませんが。。
 
質問者さんの PC が、今現在 令和ではなく平成扱いであり 31年となっても
 
今後、アップデートの適用を行った場合
そのファイルを他のPCに持って行った場合
 
31ではなく、01扱いとなりますよ。

回答
投稿日時: 19/07/11 14:23:11
投稿者: sk

引用:
A1=2019/7/11 →31 711
A2=2019/8/3 →31 8 3
和暦、月、日の値が01〜09の場合
0の部分は半角スペース1つに置き換えます

引用:
WorksheetFunction.SUBSTITUTE(SUBSTITUTE(TEXT(cells(i,"A").value,"[$-411]ee.mm.dd"),".0",". "),".",))

Replace(Replace(Format(Cells(i, "A").Value, "[$-411]\.ee.mm.dd"), ".0", ". "), ".", "")

投稿日時: 19/07/11 14:56:27
投稿者: shamo

令和ですが説明するとややこしくなると思って省略してしまいました。申し訳ございません。
 
他ソフトへインポートさせる為のデータを当エクセルで作成する予定です。
 
他ソフトの仕様で令和2年の場合でも平成32年としてデータを作り
ソフト側の方で令和に変換するようになっております。
 
Windows側の更新プログラムも令和にならぬよう止めております。
 
その為下記のような値が出れば問題ありません。
令和元年=平成31年
令和2年=平成32年
令和3年=平成33年

投稿日時: 19/07/11 15:03:14
投稿者: shamo

> Replace(Replace(Format(Cells(i, "A").Value, "[$-411]\.ee.mm.dd"), ".0", ". "), ".", "")
 
ありがとうございます!
理解出来るようじっくり見直します。