こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excelのマクロでデータ形式を容易に変更する方法

2年ぶりにExcelのマクロについて
質問させていただきます。
他の人がExcelで作ったデータを取り込んで使いたいのですが
マクロでデータ形式を変換する適切な方法を教えてください。

他の人が作ったExcelファイルで
例えばセルA1に

H28/04/01

というデータがあったとします。
画面に表示される内容も
セルに入力されている内容も
どちらも

H28/04/01

です。
ちなみに、セルの書式設定を確認すると
「標準」となっているのですが
これが「文字列」だとしても
以下に記す内容は
おそらく同じだと思います。

このデータを、分かりやすいように
セルに入力されている内容は

2016/4/1

となるようにして
しかも画面に表示される内容は

平成28年4月1日

となるようなマクロを組みたいのです。

Cells(1, 1) = Format(Cells(1,1),"yyyy/m/d")
Cells(1, 1).NumberFormatLocal = "ggge年m月d日"

と作ってみましたが
このマクロを実行すると

2016/4/1

と表示されす。
そして、この状態から
改めてマクロを実行すると
ようやく

平成28年4月1日

と表示されます。
これを1回のマクロ実行で済ませるためには
どのように組んだらよいのでしょうか。
なお、上記の内容は
Excel2010 でも Excel2003 でも同じでした。

マクロについては、まだまだ素人だと
痛感しております。
回答をよろしくお願いいたします。

投稿日時 - 2016-10-12 23:11:58

QNo.9241950

暇なときに回答ください

質問者が選んだベストアンサー

こんにちは
逆にするとどうなりますか?
Cells(1, 1).NumberFormatLocal = "ggge年m月d日"
Cells(1, 1) = Format(Cells(1, 1), "yyyy/m/d")

投稿日時 - 2016-10-13 08:02:54

お礼

回答ありがとうございます。
試してみたところ
期待通りの結果となりました。
全く想定していなかった方法でした。
本当にありがとうございました。

しかし、最後に"yyyy/m/d"と指定しているのに
なぜこうなるのでしょう。
不思議ですね。
だからこそ、この発想には
ただただ敬服するのみです。

また何かありましたら
よろしくお願いいたします。

投稿日時 - 2016-10-13 20:51:41

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

Excel2016では、「H28/04/01」を起動してすぐにコピー&ペーストすると、「H28.4.1」となり、「表示形式」を見ると、何故か「標準」ではなく、「[$-ja-JP]ge.m.d」に、勝手になってしまっていました。

強制的に「標準」にすると、セル上の表示も値も「42461」となり、質問者のような状況にはならなかったのですが、以下のマクロで、思っておられることは実現できると思います。

いったん、「2016/4/1」の表示(yyyy/m/d)にして、それを、値として、同じセルに読み込み、その上で、表示形式を「ggge年m月d日」に設定しています。

Sub Test()
Cells(5, 1).NumberFormatLocal = "yyyy/mm/dd"
Cells(5, 1).Value = Cells(5, 1).Value
Cells(5, 1).NumberFormatLocal = "ggge年m月d日"
End Sub

投稿日時 - 2016-10-13 10:05:38

補足

回答ありがとうございます。
試してみましたが
セルの書式設定は
ggge年m月d日
に変わっているにもかかわらず
H28/04/01
と表示されたままでした。
なぜなのでしょうね。

投稿日時 - 2016-10-13 20:52:33

あなたにオススメの質問