Excelで暦を表す

Excelでは、(年月日の)「月」の表示形式として睦月、如月…… を選択することは現状できない。
これを実現するには、CHOOSE() 関数を用いて、以下のような
表現を使うことができる。(A1はシリアル値)

=CHOOSE(MONTH(A1),"睦月","如月","弥生","卯月","皐月","水無月","文月","葉月","長月","神無月","霜月","師走")

この場合、例えば「令和2年睦月4日」などと表示するには、
A1 に「2020/1/4」と入力し、別のセルに

=TEXT(A1,"ggge")&"年"&CHOOSE(MONTH(A1),"睦月","如月","弥生","卯月","皐月","水無月","文月","葉月","長月","神無月","霜月","師走")&DAY(A1)&"日"

とする。& は文字列を連結する演算子。

さらに、「令和二年睦月四日」とするなら、
=TEXT(A1,"ggg")&NUMBERSTRING(TEXT(A1,"e"),1)&"年"&CHOOSE(MONTH(A1),"睦月","如月","弥生","卯月","皐月","水無月","文月","葉月","長月","神無月","霜月","師走")&NUMBERSTRING(DAY(A1),1)&"日"

NUMBERSTRING() 関数の第2引数を2にすると、

「令和弐年壱月四日」のようにもできる。

補足:
逆に「睦月」〜「師走」といった文字列を入力すると対応する月(1 〜 12)を返す関数は、

=MATCH(A1,{"睦月","如月","弥生","卯月","皐月","水無月","文月","葉月","長月","神無月","霜月","師走"},0)

また、ある年の干支を返すなら以下のように。

=CHOOSE(MOD(I12,12)+1,"申","酉","戌","亥","子","丑","寅","卯","辰","巳","午","未")

MOD() は剰余を返す関数。
この例ではセル I12に西暦で入力されているとするが、
2020/1/14 のようなシリアル値から変換するなら、もちろん数式中のI12の部分を YEAR(I12) にするだけ
さらに十干十二支を返すなら、

=CHOOSE(MOD(I12,10)+1,"庚","辛","壬","癸","甲","乙","丙","丁","戊","己")&CHOOSE(MOD(I12,12)+1,"申","酉","戌","亥","子","丑","寅","卯","辰","巳","午","未")

ちなみに、干も支も漢字一文字なので、「文字列の任意の位置から指定された文字数の文字を返す」MID() 関数を使って次のようにも記述できる。

=MID("庚辛壬癸甲乙丙丁戊己",MOD(I12,10)+1,1)&
MID("申酉戌亥子丑寅卯辰巳午未",MOD(I12,12)+1,1)


この記事が気に入ったらサポートをしてみませんか?