Windowsで西暦を和暦に変換するとき|format関数、VBAでコードを書いてみました!
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以外の環境で、誕生日を西暦から和暦に変換したり、逆に和暦から西暦に変換したいときに、私は上記のロジックでプログラムを書いています。
これからプログラムを学ぶ方の参考になれば幸いです。
ディスカッション
コメント一覧
まだ、コメントがありません