Excelを使って、データの集計をするためです。
ある列(B列)には、日付のデータが入っています。
その日付が
Feb 01 2020
Jan 30 2020
Jan 01 2020
Dec 30 2019
というように、英語表記になっています。Jan 30 2020
Jan 01 2020
Dec 30 2019
これでは、分かりにくい。
日本語表記にしたいところです。
けれでも、セルの書式設定の「表示形式」の「日付」で形式を変更しようとしても、何も変わりません。
「半角スペース」がよくないんじゃないか、これを「半角スラッシュ(/)」に置き換えたら、いいじゃないかと考えました。そこで、SUBSTITUTE関数を使いました。
SUBSTITUTE(サブスティチュート)関数は、ある特定の文字列を、他の文字列に置き換えるのに使用する関数です。
C2セルに、「=SUBSTITUTE(B2," ","/")」 と入れます。
そして、フィルハンドルをドラッグして、下の方のセルまで数式をコピーします。
この操作によって、「Feb 01 2020」 が、「Feb/01/2020」 と置き換えられました。
その上で、「表示形式」の「日付」でいろいろ形式を選ぶのですが、これでも全く変化がありません。
表示形式が変わらないのは、セルに入っているデータが数式のままだからだ、と考えました。
そこで、マクロを使って、「数式」を、「値」に変換します。
Cells(i,3).Value = Cells(i,3).Text
として、C列の数式をすべて、値に置き換えました。
ところが、これでも、まだだめです。日本語表記の日付に変更できません。
しばらく考えて、答えが思いつきました。
「データ型」だと。
数式から値に変換させるときに、「Text」プロパティを使ったので、
データ型が文字列型(String)になっていることに気づいたのです。
Cells(i, 3).Value = CDate(Cells(i, 3).Value)
というコードを書いて、C列のデータをすべて日付型(Date)に変換しました。
すると、思ったとおり、
「2020年2月1日」という日本語表記の日付に変更できました。
めでたし、めでたし。
Excelマクロは久しぶりに利用したけれども、「まだ忘れていなかった、あぁ、よかった」、と思ったのが前日。
ところが、
ところが、
ところがぁ~
翌日になって、私がやった一連の操作を、冷静に振り返ってみます。どうも無駄な作業っぽい、もっと洗練された方法がありそうに見えてきました。
そこで、B列に
Feb 01 2020
Jan 30 2020
Jan 01 2020
Dec 30 2019
というデータが入っている状態で、いきなりJan 30 2020
Jan 01 2020
Dec 30 2019
Cells(i, 2).Value = CDate(Cells(i, 2).Value)
として、B列のデータをすべて日付型(Date)に変換しました。
すると、なんとぉ~、これ一発で「2020年2月1日」と、日本語表記になっちゃった!!
前日やった作業のうち、
「Feb 01 2020」から → 「Feb/01/2020」への
文字列の置き換え作業は、意味がなかったわけです。
そう、全く無駄な作業工程を踏んだことになります。
◆お勧め書籍
でもまぁ、久しぶりにExcelマクロを使い、記憶喚起の機会になったんで、これはこれでよかった、としておきましょう。・・・・と、自分で自分を慰めることにしました。
それでは、また次の記事で。
■■■■ goosyun ■■■■