Googleスプレッドシートで和暦から西暦に変換|元年にも対応した数式

前回の記事では、Googleスプレッドシートで 西暦を和暦に変換する数式 をご紹介しました。
今回は、和暦で入力された日付を、西暦(YYYY/MM/DD)に変換する数式 をご紹介します。
たとえば、「令和7年1月1日」を「2025/01/01」の日付形式で出力できます。

和暦→西暦に変換する数式

- 和暦の日付を、西暦(YYYY/MM/DD)の形式に変換
- 「元年」も正しく処理
- 令和・平成・昭和・大正までの和暦を対象
以下の数式をセルに直接入力して使えますが、長い数式となります。
そのため、後述の名前付き関数として登録すると使いやすくなります。
西暦に変換する数式 (A1セルの和暦を変換する場合)
=IF(LEFT(A1,2)="令和", DATE(IF(MID(A1,3,1)="元", 2019, VALUE(MID(A1,3,SEARCH("年",A1)-3)) + 2018), VALUE(MID(A1,SEARCH("年",A1)+1,SEARCH("月",A1)-SEARCH("年",A1)-1)), VALUE(MID(A1,SEARCH("月",A1)+1,SEARCH("日",A1)-SEARCH("月",A1)-1))),
IF(LEFT(A1,2)="平成", DATE(IF(MID(A1,3,1)="元", 1989, VALUE(MID(A1,3,SEARCH("年",A1)-3)) + 1988), VALUE(MID(A1,SEARCH("年",A1)+1,SEARCH("月",A1)-SEARCH("年",A1)-1)), VALUE(MID(A1,SEARCH("月",A1)+1,SEARCH("日",A1)-SEARCH("月",A1)-1))),
IF(LEFT(A1,2)="昭和", DATE(IF(MID(A1,3,1)="元", 1926, VALUE(MID(A1,3,SEARCH("年",A1)-3)) + 1925), VALUE(MID(A1,SEARCH("年",A1)+1,SEARCH("月",A1)-SEARCH("年",A1)-1)), VALUE(MID(A1,SEARCH("月",A1)+1,SEARCH("日",A1)-SEARCH("月",A1)-1))),
IF(LEFT(A1,2)="大正", DATE(IF(MID(A1,3,1)="元", 1912, VALUE(MID(A1,3,SEARCH("年",A1)-3)) + 1911), VALUE(MID(A1,SEARCH("年",A1)+1,SEARCH("月",A1)-SEARCH("年",A1)-1)), VALUE(MID(A1,SEARCH("月",A1)+1,SEARCH("日",A1)-SEARCH("月",A1)-1))),
"計算外"))))
数式の説明
- 元号の確認
-
IF(LEFT(A1,2)="令和", ... ) IF(LEFT(A1,2)="平成", ... ) IF(LEFT(A1,2)="昭和", ... ) IF(LEFT(A1,2)="対象", ... )
LEFT(A1,2)
で 「令和」「平成」「昭和」「大正」 のどの元号に該当するかを判定します。IF
関数を使い、それぞれに対応する処理を適用します。
- 日付形式への変換
-
DATE(西暦, 月, 日)
- この関数で、和暦の日付を Googleスプレッドシートの「日付データ」として認識される形式 に変換します。
- 年の変換
-
IF(MID(A1,3,1)="元", 2019, VALUE(MID(A1,3,SEARCH("年",A1)-3)) + 2018) IF(MID(A1,3,1)="元", 1989, VALUE(MID(A1,3,SEARCH("年",A1)-3)) + 1988) IF(MID(A1,3,1)="元", 1926, VALUE(MID(A1,3,SEARCH("年",A1)-3)) + 1925) IF(MID(A1,3,1)="元", 1912, VALUE(MID(A1,3,SEARCH("年",A1)-3)) + 1911)
- 「元年」の場合、開始年(2019, 1989, 1926, 1912)を適用します。
- 通常の年の場合、「元年」の処理を除いた上で西暦に変換します。
VALUE(MID(...))
で「〇年」の部分を数値化 し、それぞれの開始年を加算します。令和
:+2018
平成
:+1988
昭和
:+1925
大正
:+1911
- 月の取得
-
VALUE(MID(A1,SEARCH("年",A1)+1,SEARCH("月",A1)-SEARCH("年",A1)-1))
"年"
の次の位置から"月"
の前までの数値を取得します。
- 日の取得
-
VALUE(MID(A1,SEARCH("月",A1)+1,SEARCH("日",A1)-SEARCH("月",A1)-1))
"月"
の次の位置から"日"
の前までの数値を取得します。
- 明治以前(計算外)
-
"計算外"
- 明治以前の 1912年7月29日以前の和暦データは除外 として、
"計算外"
を表示します。
- 明治以前の 1912年7月29日以前の和暦データは除外 として、
(参考) 年表示のみの数式

年表示のみの数式
=IF(LEFT(A1,2)="令和", IF(MID(A1,3,1)="元", 2019, VALUE(MID(A1,3,SEARCH("年",A1)-3)) + 2018),
IF(LEFT(A1,2)="平成", IF(MID(A1,3,1)="元", 1989, VALUE(MID(A1,3,SEARCH("年",A1)-3)) + 1988),
IF(LEFT(A1,2)="昭和", IF(MID(A1,3,1)="元", 1926, VALUE(MID(A1,3,SEARCH("年",A1)-3)) + 1925),
IF(LEFT(A1,2)="大正", IF(MID(A1,3,1)="元", 1912, VALUE(MID(A1,3,SEARCH("年",A1)-3)) + 1911), "変換不可"))))
年月日までを表示させる数式と比べると、やや短い数式になります。
「名前付き関数」を設定してカンタンに西暦に変換

数式を繰り返し使う場合は、「名前付き関数」に設定すると、簡単に利用できます。
名前付き関数の設定方法

上部メニューから「データ」ー「名前付き関数」を選択します。
(右クリックメニューからでも可)

画面右側に表示される名前付き関数から「新しい関数を追加」をクリックします。

関数名と説明に自分が分かりやすい内容を入力します。
関数名: 西暦
(好きな名前でOK)
説 明:指定した和暦の日付を西暦に変換します

引数名(関数に渡すデータ)を入力します。
引数名:日付
(好きな名前でOK)

「数式の定義」に以下の数式を貼り付けます。
=IF(LEFT(日付,2)="令和", DATE(IF(MID(日付,3,1)="元", 2019, VALUE(MID(日付,3,SEARCH("年",日付)-3)) + 2018), VALUE(MID(日付,SEARCH("年",日付)+1,SEARCH("月",日付)-SEARCH("年",日付)-1)), VALUE(MID(日付,SEARCH("月",日付)+1,SEARCH("日",日付)-SEARCH("月",日付)-1))),
IF(LEFT(日付,2)="平成", DATE(IF(MID(日付,3,1)="元", 1989, VALUE(MID(日付,3,SEARCH("年",日付)-3)) + 1988), VALUE(MID(日付,SEARCH("年",日付)+1,SEARCH("月",日付)-SEARCH("年",日付)-1)), VALUE(MID(日付,SEARCH("月",日付)+1,SEARCH("日",日付)-SEARCH("月",日付)-1))),
IF(LEFT(日付,2)="昭和", DATE(IF(MID(日付,3,1)="元", 1926, VALUE(MID(日付,3,SEARCH("年",日付)-3)) + 1925), VALUE(MID(日付,SEARCH("年",日付)+1,SEARCH("月",日付)-SEARCH("年",日付)-1)), VALUE(MID(日付,SEARCH("月",日付)+1,SEARCH("日",日付)-SEARCH("月",日付)-1))),
IF(LEFT(日付,2)="大正", DATE(IF(MID(日付,3,1)="元", 1912, VALUE(MID(日付,3,SEARCH("年",日付)-3)) + 1911), VALUE(MID(日付,SEARCH("年",日付)+1,SEARCH("月",日付)-SEARCH("年",日付)-1)), VALUE(MID(日付,SEARCH("月",日付)+1,SEARCH("日",日付)-SEARCH("月",日付)-1))),
"変換不可"))))

「作成」をクリックします。

関数が表示されれば作成完了です。
名前付き関数の使い方

該当のセルに以下の数式を入力します。
(A1 セルを参照する場合)
=西暦(A1)

A1セルにあった和暦の日付を西暦に変換して表示されます。
複数のセルを一括で西暦に変換する場合はアレイフォーミュラ関数が便利です。

(A1からA8の和暦を一括変換する場合)
=ARRAYFORMULA(西暦(A1:A8))
まとめ
Googleスプレッドシートの場合、西暦→和暦の変換と同じように、和暦→西暦も数式を使うことで変換できます。
西暦→和暦 変換の数式と合わせてご活用ください。

弊社では、Google Apps Script(GAS)を活用した業務効率化のサポートを提供しております。
GASのカスタマイズやエラー対応にお困りの際は、ぜひお気軽にご相談ください。
また、ITツールの導入支援やIT導入補助金の申請サポートも行っております。
貴方の業務改善を全力でサポートいたします。
コメント