Excelで干支を出す式。年の数字にYEARを重ねると、1900年から2100年まで全部「巳」になった

2026-10-06Excelの使い方

Excelで年から干支を出すなら、=MID("申酉戌亥子丑寅卯辰巳午未",MOD(A1,12)+1,1) で足りる。A1に2027と入れると「未」が出る。十干までつなぐと2027年は丁未(ひのとのひつじ)だ。

ところが、日付用に YEAR を挟んだ式に2027という年の数字を入れると「巳」が出る。1900年から2100年まで201年を入れても、全部が巳だった。干支の式を16通り並べて201年に当てると、全部の年で合ったのは6通り。2027年だけは合うのに、12年に1度だけ止まる式も2つあった。

干支の式に入れる前に見る分かれ道。数値として入っているか、10000より小さいか、立春の日より前か、立春で区切るかで分かれる

正解の並びは、国立天文台暦計算室の六十干支の表を使った。起点の年は、西宮市の阪神甲子園球場の歴史にある「球場が完成した1924年は甲と子が60年ぶりに重なる年」という記述で、1924年を甲子とした。立春の日付は国立天文台の令和9年暦要項の二十四節気で、どれも2026年10月6日に確かめた。式の結果はMicrosoft 365のExcel(バージョン16、ビルド20326)で確認、2026年10月6日。

干支を出すExcelの式は、12で割った余りに1を足して何番目かを取る

十二支は12年で一回りする。西暦を12で割った余りは0から11の12通りで、同じ余りの年は同じ十二支になる。2016年は12で割り切れて余りが0で、申の年だった。だから申から並べた12文字の、余り+1番目を取れば十二支になる。

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

子から並べたいときは4を引く。2020年が子の年で、2020から4を引くと12で割り切れるからだ。十干も同じ考えで、甲の年は西暦の1の位が4なので、4を引いて10で割った余り+1番目が十干になる。1924年は、4を引くと60でも割り切れる。十干も十二支も先頭の甲子に戻る年なので、甲子園の話と合う。

+1が要るのは、MIDもCHOOSEも1番目から数えるからだ。MODの余りは0から始まる。ここを1つずらし忘れると、全部の年がずれるか、12年に1度止まる。

検索で上に出てくるページを読むと、どこもこの形か、余りと十二支の対応表をVLOOKUPやLOOKUPで引く形だった。どちらも、年の数字を入れる限り201年すべてで合う。崩れるのは、式の数字を少し変えたときと、入れるものが年の数字でないときだ。

16通りの書き方を、1900年から2100年に当てて数えた

配布する表の「2_書き方を比べる」に、十二支の式を11通り、十干の式を4通り、つないだ式を1通り並べた。それぞれを1900年から2100年に当て、正解と比べている。

干支の式を16通り並べた表。2027年を入れた結果と、1900〜2100年の201年で合った年数、合わなかった年数、最初に合わなかった年が出ている

2027年で正しく出たのは16通りのうち8通り。十二支の11通りに限ると4通りだった。201年すべてで合ったのは6通りで、どれも年の数字を入れて、余り+1番目を取る形だった。

1900〜2100年の201年で、十二支や十干が正しく出た年数。申から並べたMIDかCHOOSEは201年、3を引いて+1を付けないCHOOSEは185年、十干を3を引いてCHOOSEは181年、年の数字にYEARを重ねると17年、3を引いて+1も付けると0年、+1を忘れたCHOOSEは0年

いちばん気づきにくいのは、=CHOOSE(MOD(A1-3,12),"子","丑",…,"亥") の形だ。3を引いて+1を付けないので、子の年は余りが1になり、ちゃんと1番目の子を取る。2027年も未と出る。ただ亥の年だけは余りが0になり、CHOOSEは0番目を受け付けずに式が止まる。1900年から2100年では1911年から2091年までの16回。今年と来年で確かめただけでは通ってしまう。十干の同じ形は、癸の年の20回で止まった。

3を引いたうえに+1も付けると、全部の年が1つ先にずれる。2027年は申と出て、201年のうち1年も合わない。4を引いて+1を忘れると1つ手前にずれて、2027年は午、子の年の17回は止まる。申から並べたCHOOSEで+1を忘れたときも、2027年は午だった。

年の数字にYEARを重ねると巳になるのは、2027が1905年7月19日だから

生年月日から干支を出す式は、=MID("申酉戌亥子丑寅卯辰巳午未",MOD(YEAR(A1),12)+1,1) のようにYEARを挟む。この式をそのまま使い回して、A1に2027と年だけを入れると巳が出る。

Excelの日付は、1900年1月1日を1とした通し番号だ。2027という数は、日付として読むと1905年7月19日になる。=YEAR(2027) は1905を返し、1905年は巳の年なので巳と出る。1900を入れると1905年3月14日、2100を入れると1905年9月30日で、201年のどれを入れてもYEARは1905を返した。合うのは巳の年の17回だけで、それも偶然だ。

逆向きの間違いもある。年の数字用の式に日付をそのまま入れると、通し番号を12で割ることになる。2027年1月1日は通し番号46388で、出たのは辰だった。2027年の365日を1日ずつ入れると、未と出たのは31日だけ。日付が1日進むごとに、十二支も1つずつ進んでいく。

令和の年を入れたときも合わない。令和9年の9を入れると巳。令和1年から82年まで入れて、一度も合わなかった。令和の年と西暦の差は2018で、12で割ると2余るので、いつも2つずれる。和暦で年を持っている名簿なら、2018を足してから式に入れる。

「2027年」と文字で入れたセルは、MODが数として読めずに式が止まる。CSVから取り込んだ名簿の生年月日が文字のまま残っている話は、Excelの日付が文字列や数字になる記事で12通り数えた。

配布した表は、10000より小さい数を年、それ以上を日付として読む

年と日付が同じ列に混ざっていても1本の式で済むように、配布する表では入っている数の大きさで分けた。10000より小さければ年の数字、10000以上なら日付として読み、日付のときだけYEARを通す。

読み方 =IF(ISNUMBER(A7),IF(A7<10000,"年","日付"),"数値でない")
年     =IF(B7="年",A7,YEAR(A7))

10000という区切りには理由がある。通し番号の10000は1927年5月18日で、それより前の日付は年の数字と見分けがつかない。1927年5月より前に生まれた人の生年月日を扱う名簿は少ないと考えて、ここで切った。その人がいるときは、年の数字で入れれば正しく出る。

ほかの案も試した。セルの表示形式を調べるCELL関数で日付かどうかを見る方法は、和暦の表示形式で何が返るかまで確かめきれず、やめた。年と生年月日を別の列に分けるのがいちばん確実だが、貼り付ける名簿の形を選んでしまうので見送った。

2027年1月1日から2月3日に生まれる子は、立春で区切ると丙午になる

ここまでは、年の境目を1月1日として数えてきた。年賀状を出すのも、年男や年女を数えるのも、1月1日から2027年の未として扱う。

一方で、立春を年の始まりとする数え方もある。こちらで数えると、2027年1月1日から2月3日に生まれた子は、前の年の丙午になる。国立天文台の暦要項では、2027年の立春は2月4日10時46分。節分は2月3日だ。1月1日から立春の前日までは34日あり、1年の9%ほどの日が、どちらで数えるかで干支が変わる。

丙午の年の後にも同じことが起きる。1967年2月3日に生まれた人は、1月1日で区切れば丁未、立春で区切れば丙午になる。1966年2月1日生まれの人は、1月1日で区切れば丙午で、立春で区切ると乙巳だ。

立春は毎年2月4日とは限らない。国立天文台の暦要項は2001年から2027年までテキストで読めて、2021年は2月3日23時59分、2025年は2月3日23時10分だった。2021年は日付が変わる1分前に立春を迎えている。

立春の日 1955〜2035年の年数 1月1日から立春の前日までの日数
2月3日 4年(2021、2025、2029、2033年) 33日
2月4日 69年 34日
2月5日 8年(1956年から1984年までの4年おき) 35日

2000年以前と2028年以降は、太陽の黄経が315度になる時刻を自分で計算した。暦要項がある2001年から2027年の27年と比べると、日付はすべて一致し、時刻の差は10分早いものから4分遅いものまでに収まった。日付の変わり目に近かった1984年と1988年、それに丙午の1966年は、スキャンされた暦要項の画像を開いて日付を照合した。1984年は2月5日0時19分、1988年は2月4日23時43分で、どちらも計算した日付と合っていた。

配布する表の「1_干支を出す」でB2を立春にすると、生年月日がその年の立春の日より前の行は、YEARの年から1を引いて干支を出す。見本の架空の生年月日100人では、9人の干支が1月1日で区切ったときと変わった。

名簿の生年月日を貼ると、年男・年女と立春で変わる人に印がつく

「1_干支を出す」のA列に、年の数字か生年月日を貼る。十二支、十干十二支、よみが横に出る。B3に2027と入れておくと、未の年に生まれた人の行に「年男・年女」と出て、右の集計に人数が出る。見本の112行では、1月1日で区切ると18人、立春で区切ると13人だった。

立春で区切ったときに干支が変わる行は、橙で塗られる。文字のまま入っている行はB列が赤になる。立春の日付は「3_立春」の1955年から2035年までの表から引いていて、表にない年は「立春が表にない年」と出る。行を足せば、その年も使える。

「4_六十干支」は、正解に使った60通りの並びとよみだ。1900年から2100年のどの年がどの干支かも並べてある。生まれ年ごとの干支を今年の満年齢と並べて見るなら、年齢早見表に1月1日で区切った干支を出している。年賀状の枚数と費用は年賀状100枚の記事で数えた。干支の印を年賀状の宛名の表に足す人は、生年月日の列を作ってこの式を横に置けば済む。

作ってみて意外だったのは、間違った式でも今年の干支はたいてい正しく出ることだ。16通りのうち8通りが2027年を正しく出したが、201年すべてで合ったのは6通り。式を確かめるときは、今年と来年だけでなく、子と亥の年、それに日付と年の数字を1つずつ入れて見ている。

確かめていないこと

干支の境目を1月1日にするか立春にするかを決めた公的な文書は見つけていない。年賀状や年男・年女は1月1日、立春で区切るのは暦や占いの一部の数え方、というところまでで、どちらが正しいかは書いていない。

立春の時刻は見ていない。立春の日に生まれた人は、時刻にかかわらず新しい年の干支にしている。2027年2月4日の10時46分より前に生まれた人を、立春で区切る数え方で前の年とするかどうかは確認していない。

1955年から2000年と、2028年から2035年の立春は計算値だ。暦要項の画像で照合したのは1966年、1984年、1988年の3年で、ほかの年は暦要項と1件ずつ比べていない。計算値の年で、日付の変わり目から30分以内に立春が来るのは1984年と1988年の2年だけで、その2年は画像で日付を確かめた。

Excel 2013から2019、Mac版、Googleスプレッドシートでは試していない。配布した表の書き方比べは、Excel 2013で入ったFORMULATEXTで式を見せているので、Excel 2010では式の欄が出ないはずだが、試してはいない。和暦の表示形式で入力したセルのCELL関数の結果も確かめていない。

動作確認: Microsoft 365のExcel(バージョン16) / Windows 11 / 2026-10-06確認

Excel干支十二支MOD立春テンプレート