前回に続いて和暦の話題です。
現バージョンの Excelでは、セルに例えば「令和6年7月21日」というように日付を和暦で入力すると、日付として認識され、数式バーには「2024/7/21」と表示されます。(下図)

 

これは、Webページや他の文書に掲載されている和暦の日付をコピー&ペーストしてセルに貼り付けても、同様に日付として認識されます。
CSV形式で保存されているものでも、Excelシートにインポートすれば日付として認識されます。

ならば、現バージョンの Excelを使用していれば、日付を和暦で入力しても問題なくシリアル値に変換してくれる?
ところが、配慮しなくてはならないことがあります。

(1) 先頭に「'」アポストロフィ(シングルクォーテーション)を付けて入力した場合

この場合は、そのセルは文字列が入力されたものとして扱われ、「'令和6年7月21日」と入力すれば、そのまま左寄せで表示されます。
もちろん、日付として認識されないので、シリアル値に変換されることもありません。

(2) セルの表示形式を文字列に設定してあった場合

このセルに「令和6年7月21日」と入力しても、やはり文字列として扱われ、左寄せで表示され、シリアル値に変換されることもありません。

このように入力された和暦の日付をどうにかしてシリアル値に変換するにはどうしたらよいでしょう。

「DATEVALUE」関数を使ってシリアル値に変換できます。
「DATEVALUE」関数は、和暦に限らず文字列として入力された日付をシリアル値に変換してくれます。
その書式は、次のようになります:
  DATEVALUE(日付文字列)

例えば、A3セルに「'令和6年7月21日」と入力し、A5セルは予め表示形式を文字列に設定し「令和6年7月21日」と入力し、両方とも文字列として扱われています。
それぞれの右隣のセルに「=DATEVALUE(A3)」「=DATEVALUE(A5)」と入力すると、いずれも「45494」と返されます。
これらのセルの表示形式を「短い日付形式」などに替えれば「2024/7/21」と表示されます。(下図)

 

なお、1900年1月1日より前の和暦日付を与えても「#VALUE!」エラーとなります。

おまけ。
シリアル値に変換できた日付データを、和暦表示とするには「DATESTRING」関数が使えます。
Excel 隠し関数(非公開関数)」記事でご紹介しましたように、隠し関数の 1つです。
なので、関数ライブラリにも表示されず、関数ウィザードを使っても関数一覧に現れず、セルに手入力してもそのヒントも現れません。

C3セルに「=DATESTRING(B3)」と入力すると「令和06年07月21日」と表示されます。


 

左寄せで表示されていますが、シリアル値は保持されています。

「DATESTRING」関数の代わりに「=TEXT(B3,"gggee年mm月dd日")」としても同じように和暦表示とすることができます。

ただし、TEXT関数では文字列とされた値を返します。