なんでもエクセル(Nandemo Excel)

何でもエクセルでやってしまう そこのあなた。ようこそ

数式/関数:六曜を計算する

六曜(先勝・友引・先負・仏滅・大安・赤口)を数式で計算しようと思ったら、月齢計算が必要になるので、なかなかにめんどくさい。なのに Excelでカレンダーを作りたいという人に限って「六曜も表示したいなー」などと気軽にいい始めるのである。

こういう時は、WebAPIの力を借りよう。暦APIjsonデータを提供してくれているので、これを使えば六曜でも十支十二支でも簡単に計算できる。旧暦カレンダーなんて作らなくてもいい。

六曜
=LET(     date,A1,     key,"rokuyou",     url,"http://koyomi.zingsystem.com/api/?mode=d&cnt=1",     ty,"&targetyyyy="&YEAR(date),     tm,"&targetmm="&TEXT(date,"mm"),     td,"&targetdd="&TEXT(date,"dd"),     ws,WEBSERVICE(url&ty&tm&td),     IFERROR(MID(ws,FIND(key,ws)+10,2),"") )

Excel2021より前のバージョンだと LETが使えないので、定義付けせずにダラダラ書くことにはなるけど、Excel2013以上ならこれで計算できる。

十支十二支は2つをくっつけようと思ったら長くなるので、部分抽出してからいらない部分を消せばいいかな。TEXTSPLITを使えるならそっちでやってもいいけど。

十支十二支
=LET(     date,A1,     key,"zyusi",     url,"http://koyomi.zingsystem.com/api/?mode=d&cnt=1",     ty,"&targetyyyy="&YEAR(date),     tm,"&targetmm="&TEXT(date,"mm"),     td,"&targetdd="&TEXT(date,"dd"),     ws,WEBSERVICE(url&ty&tm&td),     IFERROR(REPLACE(MID(ws,FIND(key,ws)+8,15),2,13,""),"") )

干支なら、MOD関数を使えば計算できるからそっちは割愛。