Windowsで西暦を和暦に変換するとき|format関数、VBAでコードを書いてみました!

2020年5月30日

EXCELやACCESSの中で、西暦を和暦にしたい時があると思います。このページでは、私が仕事でやっている変換方法を備忘録で残してあります。平成から令和になった時、Microsoftの関数はすぐに対応されなくて困ったものでした。

<目次>

EXCELのセルに西暦を入力したときに和暦に変換したいとき

セルの書式設定でユーザー定義を選択し、右ウィンドウに「ggge年m月d日」という書式定義を追加します。

こうすると、2020/4/1と入力すると、令和2年4月1日と和暦に自動的に変換されます。
「ggge年m月d日」を「gggee年mm月dd日」とすると、令和02年04月01日となります。

EXCEL/VBAの中で、西暦を和暦にしたいとき

EXCEL/VBAの中で西暦を和暦にするときはTEXT関数を使います。

Dim  yyyymmdd as string ;

yyyymmdd=text(“2020/04/01″ , ”ggge年m月d日" )

' yyyymmdd=令和2年4月1日

ACCESS/VBAの中で、西暦を和暦にしたいとき

ACCESS/VBAの中で西暦を和暦にするときはFORMAT関数を使います。

Dim  yyyymmdd as string ;

yyyymmdd=format(“2020/04/01″ , ”ggge年m月d日" )

' yyyymmdd=令和2年4月1日

先日、microsoftのOSのアップデートがあり、平成32年4月1日となってしまう事象があり
大騒ぎしたしたことがありました。
すぐに修正パッチがでましたが。

VBAのコードを書いて西暦を和暦変換する

新しい元号(令和)が決まっても、microsoftのformat関数などはすぐに対応されませんでした。
そんな時は、自分でコード書いて対応するのもありです。

和暦を西暦に変換する時の範囲は下記のとおりです。

明治  1868年1月25日~1912年7月29日
大正  1912年7月30日~1926年12月24日
昭和  1926年12月25日~1989年1月7日
平成  1989年1月8日~2019年4月30日
令和  2019年5月1日~

上記の西暦の範囲を考慮してVBAのコードを書くと、下のような感じになります。

++++++++++++++

Dim  yyyymmdd  as string ;
Dim  wareki as string ;

yyyymmdd="任意の西暦" ;

if ( yyyymmdd >= “20190501" )
wareki="令和"
else if ( yyyymmdd >= “19890108" )
wareki="平成"
else if ( yyyymmdd >= “19261225" )
wareki="昭和"
else if ( yyyymmdd >= “19120730" )
wareki="大正"
else if ( yyyymmdd >= “18680125" )
wareki="明治"
else
wareki=""
end if

++++++++++++++

VBAであれば、text関数やformat関数を使って西暦から和暦に簡単に変換できますが、他の環境では同じような関数はないので自分でコードを書く必要がでてきます。
Windows以外の環境で、誕生日を西暦から和暦に変換したり、逆に和暦から西暦に変換したいときに、私は上記のロジックでプログラムを書いています。

これからプログラムを学ぶ方の参考になれば幸いです。