『Excel VBA 表計算とプログラミング学習サイト』では、アフィリエイトプログラムを利用して商品を紹介しています。

【Excel VBA】西暦と和暦の相互変換

「西暦2011年は平成何年?」
と問われても、なかなか咄嗟には答えられないですよね。
「ええと、2018年が平成30年だから…」
というふうに少し考えないと答えがでません。でも大丈夫! エクセルなら大丈夫! 我らのエクセルさんが西暦を平成に、平成を西暦に、ぱぱっと変換してくれます! だから大丈夫! え? 今日はいつにも増してこばとのテンションが高い? そうですか? … それは夏だから!(意味不明)… まあ、とにかく今日は、エクセルで西暦表示和暦表示に変換する方法を解説します。

【Excel】西暦表示を和暦表示に変換する方法

西暦から和暦の変換は特に関数を使わなくてもできます(関数を使う方法はあとで説明します)。それはとっても簡単。[セルの書式設定] で表示形式を変えてしまえばいいのです。
 
まずは、こんなふうに日付を西暦でセルに入れておきます。
 
Excel西暦の日付

次に [セルの書式設定画面] を表示させましょう。Excel2013 ならば、日付の入力されたセルを選択した状態で [ホーム]、[表示形式] を順に押して、メニューの一番下にある [その他の表示形式] を選択します。
 
Excelその他の表示形式

あるいはセルを右クリックして [セルの書式設定画面] を表示させることもできます(この手順ならば、Excel のバージョンを問いません)。画面が表示されたら、[カレンダーの種類] から [和暦] を選択しましょう。
 
Excel和暦を選択
 
元号表記を「H」か「平成」か2通り選べるので、好きな方を選択しましょう。
 
Excel平成の形式を選択
 
[Enter] キーを押すと、日付が平成表記に変わります!
 
Excel西暦を和暦に変換
え? 関数はどうした? 早く教えろ? … 別に上の方法でやれるんだから、関数いらないと思うけど … まあ、どうしてもっていうんなら … あまり「関数、関数」と言ってるとエクセルオタクになっちゃいますよ?
  
関数で日付の表示形式を変える方法はいくつかありますが、一番簡単で素直な方法は TEXT関数を使うやり方です。「シリアル値が云々…」という面倒な話も出てこないしね。TEXT関数を使うときは

=TEXT(値,表示形式)

の形式で入力します。[値] には日付を入れます。[表示形式] のところに
「西暦と和暦どちらにするのか、曜日を表示するのか」
というようなことをコードで指定します。とりあえず下の図のようなシートを用意してセル C4 に

=TEXT(C3,"ggge年mm月dd日")

と入力すると、セル C3 の西暦表示が和暦表示に変換されます。
 
ExcelのTEXT関数で暦を変換
 
“ggg” が和暦の元号、”e” が和暦の年数にあたる部分です。”ggg” をたとえば “gg” とすると「平成」の「平」のみが表示されます。”yy”, “mm”, “dd” はそれぞれ年、月、日の表示を指定するコードです。で、これをまた逆に西暦に変換するには

=TEXT(C4,"yyyy年mm月dd")

と入力します。「2018年07月27日」と表示されるはずですよ。ちなみに yyyy を yy にすると下 2 桁の “18年” だけ表示されます。まあ、このあたりは適当に使い分けてくださいな。

【VBA】西暦を和暦に変換

ついでに VBA で西暦を和暦に変える方法も載せておきます。使用するのは日付の書式設定をする Format 関数です:

Format(日付,書式)

たとえば現在の日付を和暦の形で得るには

Format(Now, "ggge年mm月dd日")

と記述します。下のコードをコピーして試してみてくださいな。

'[VBA] 日付を和暦で表示するプロシージャ
Sub Wareki()
  Dim x As String
  x = Format(Now, "ggge年m月d日")
  Debug.Print x
End Sub

それでは、皆さん、今日覚えたスペシャルなスキル(?)を使って、どんどん西暦を和暦に変えちゃってください。
 
➡【VBA】日付型変数と日付シリアル値

コメント

  1. あとりえこばと より:

    【AI連載小説】生田目次郎のエクセル奮闘記(7)
    「エクセルで西暦を和暦に変換する方法を話し合います」
     
    ある日のオフィスで、省吾と京子は仕事の合間にエクセルで西暦を和暦に変換する方法について熱く議論していました。
    省吾:「京子、西暦を和暦に変換するってなかなか面白い課題だよね」
    京子:「確かに、これは実用的で面白いアプローチが求められそうですね。どんな方法がいいと思いますか?」
    省吾:「まず、和暦といえば元号だよね。だから、元号が切り替わる年を基準にして、その前後で西暦と和暦の対応を考えるのが良いんじゃないかな」
    京子:「なるほど、元号ごとに対応表を作って、その中で検索して変換するってことですね」
    省吾:「そうそう。例えば、令和2年なら元号が令和で、2019年以降なら和暦は西暦から2018引いたものになるわけだ」
    京子:「でも、新しい元号が制定された場合はどうしましょうか?」
    省吾:「それは新しい元号が制定されたら、対応表を更新して、新しい元号から再スタートする感じかな」
    京子:「なるほど、動的に元号が変わるたびに更新する方法ですね。実現できそうです」
    省吾:「そうだね。あとはエクセルの関数やVBAを使って、それを実装すると良さそうだ」
    京子:「確かに、関数やVBAを使えば自動的に変換できるし、便利ですね」

    省吾と京子は和気あいあいとした雰囲気で、エクセルでの和暦変換についてアイデアを出し合いながら、実装方法についても考えていました。