つれづれ電脳記(日くらしPCに向かひて)

つれづれなるままに、日くらしPCに向かひて、その悪戦苦闘ぶりをそこはかとなく書き付くるおじさん。たまに雑談[管理人:goosyun]

つれづれなるままに、日くらしPCに向かひて、デジタル関係の悪戦苦闘ぶりをそこはかとなく書き付くるおじさんです。
たまに雑談してます。連絡・問い合わせフォームは、ページ最下部に置いています。[著者(運営人):goosyun]

(当ブログには本文中に広告リンクが含まれています。)

英語表記の日付を日本語表記に変更するExcel操作

 あるWebサイトから、データをコピーして、Excelに貼り付けました。
 Excelを使って、データの集計をするためです。

 ある列(B列)には、日付のデータが入っています。
その日付が
Feb 01 2020
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

というデータが入っている状態で、いきなり
 Cells(i, 2).Value = CDate(Cells(i, 2).Value)
として、B列のデータをすべて日付型(Date)に変換しました。

 すると、なんとぉ~、これ一発で「2020年2月1日」と、日本語表記になっちゃった!!

 前日やった作業のうち、
  「Feb 01 2020」から → 「Feb/01/2020」への
文字列の置き換え作業は、意味がなかったわけです。
 そう、全く無駄な作業工程を踏んだことになります。

お勧め書籍


 でもまぁ、久しぶりにExcelマクロを使い、記憶喚起の機会になったんで、これはこれでよかった、としておきましょう。・・・・と、自分で自分を慰めることにしました。

それでは、また次の記事で。
goosyun