和暦および西暦から干支を取得する(CHOOSE,MOD,DATEVALUE,YEAR)

和暦や西暦の値に対する干支を取得する方法です。ここでは Excel の関数である CHOOSE 関数、 MOD 関数、 DATEVALUE 関数、 YEAR 関数を使って和暦および西暦から干支を取得する方法について解説します。

(2021 年 03 月 09 日公開 / 2022 年 03 月 09 日更新)

西暦の数値から干支を取得する

最初に西暦の値から干支を計算する方法です。次の表示を見てください。

西暦の数値から干支を取得する(1)

干支の種類は 12 種類で同じ干支は 12 年毎に現れます。例えば 未(ひつじ) 年になる 2015 年、 2003 年、 1991 年、 1979 年、... は 12 で割った余りを取得するとすべて 11 となります。つまり西暦を 12 で割った余りが 11 ならば 未(ひつじ) 年です。他の干支も同じように同じ干支であれば 12 で割った余りの値が同じになります

それでは実際に西暦の数値から干支を取得してみます。次のシートを見てください。

西暦の数値から干支を取得する(2)

干支を表示する C3 セルに次のように入力しました。

=CHOOSE(MOD(B3,12)+1,"申(さる)","酉(とり)","戌(いぬ)","亥(い)","子(ね)","丑(うし)","寅(とら)","卯(う)","辰(たつ)","巳(み)","午(うま)","未(ひつじ)")

西暦の数値から干支を取得する(3)

Enter キーを押すと C3 セルには次のように干支が表示されます。

西暦の数値から干支を取得する(4)

C4 セルから C14 セルに同じように数式を入力しました。

西暦の数値から干支を取得する(5)

西暦の数値から干支を取得することができました。

解説

CHOOSE 関数を使って干支を取得するとき、 CHOOSE 関数は指定できるインデックスが 1 からなので、西暦を 12 で割った余りに 1 を加えた値をインデックスとして指定しています。

MOD(西暦,12)+1

西暦または和暦の文字列の値から干支を取得する

"2015年" や "平成3年" のように対象の値が文字列として入力されている場合、 DATEVALUE 関数を使って西暦や和暦の文字列から日付のシリアル値を取得したあと、日付のシリアル値から YEAR 関数を使って西暦の年の数値を取得し、そのあとで干支を取得します。

それでは実際に西暦や和暦の文字列の値から干支を取得してみます。次のシートを見てください。

西暦または和暦の文字列の値から干支を取得する(1)

干支を表示する C3 セルに次のように入力しました。

=CHOOSE(MOD(YEAR(DATEVALUE(B3&"1月1日")),12)+1,"申(さる)","酉(とり)","戌(いぬ)","亥(い)","子(ね)","丑(うし)","寅(とら)","卯(う)","辰(たつ)","巳(み)","午(うま)","未(ひつじ)")

西暦または和暦の文字列の値から干支を取得する(2)

Enter キーを押すと C3 セルには次のように干支が表示されます。

西暦または和暦の文字列の値から干支を取得する(3)

C4 セルから C8 セルに同じように数式を入力しました。

西暦または和暦の文字列の値から干支を取得する(4)

西暦や和暦の文字列の値から干支を取得することができました。

解説

実際に "2015年" や "平成3年" などの値から DATEVALUE 関数を使って日付を表すシリアル値を取得します。

=DATEVALUE(西暦または和暦&"1月1日")

DATEVALUE 関数は引数として "2015年" や "平成3年" とだけ指定するとエラーとなるので "1月1日" を連結させて "2015年1月日" や "平成3年1月1日" のように引数に指定します。

取得したシリアル値から今度は YEAR 関数を使って年の数値を取得します。

=YEAR(DATEVALUE(西暦または和暦&"1月1日"))

年の数値を取得したら、あとは西暦の年の数値から干支を取得した場合と同じ数式で干支を取得します。

今回使用した関数の解説は下記を参照されてください。

-- --

Excel の関数である IFS 関数、 DATEDIF 関数、 TODAY 関数を使って西暦の数値から干支を取得する方法について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。