SYUNDOファイル

お役に立てればうれしいです。

エクセル

エクセルで月齢計算

投稿日:2016年12月7日 更新日:

月齢とは、地球から見て月と太陽が同じ方向になった時を0(ゼロ)として日単位で表した数字です。

月齢が、正確(ほぼ正確)に分かると二十四節気や潮の満ち引きなども求めることができます。

月齢計算は
http://park12.wakwak.com/~maki/sunmoon.htm
のプログラムを参考にさせて頂きました。

月齢計算するには修正ユリウス通日、月の視横径、太陽視横径が必要になります。


スポンサーリンク

【修正ユリウス日の計算】

修正ユリウス通日とは、ユリウス通日から2400000.5を引いた数です。
ユリウス通日とは、紀元前4713年1月1日の正午を0日として数える日数のことです。

ユリウス通日や修正ユリウス通日は太陽横径や暦を求めるときによく使われます。

mjd=修正ユリウス日
求める日の月が1月、2月なら年から-1、月に+12

mjd=INT(365.25*年)+INT(年/400)-INT(年/100)+INT(30.59*月)+日-678912

MJD=修正ユリウス日+時間

MJD=mjd+時間/24+分/1440+秒/86400-0.375

【月の視横径計算】

delta=((MJD-51544.5)/365.2425+64)/86400
T=(MJD-51544.5+delte)/36525.0
DEG==1/(180/3.14159265358979)

y=218.3166+481267.8811*T-0.0015*T*T
y1=y+6.2888*COS((477198.868*T+44.963)*DEG)
y2=y1+1.274*COS((413335.35*T+10.74)*DEG)
y3=y2+0.6583*COS((890534.22*T+145.70)*DEG)
y4=y3+0.2136*COS((954397.74*T+179.93)*DEG)
y5=y4+0.1851*COS((35999.05*T+87.53)*DEG)
y6=y5+0.1144*COS((966404.0*T+276.5)*DEG)
y7=y6+0.0588*COS((63863.5*T+124.2)*DEG)
y8=y7+0.0571*COS((377336.3*T+13.2)*DEG)
y9=y8+0.0533*COS((1367733.1*T+280.7)*DEG)
y10=y9+0.0458*COS((854535.2*T+148.2)*DEG)
y11=y10+0.0409*COS((441199.8*T+47.4)*DEG)
y12=y11+0.0347*COS((445267.1*T+27.9)*DEG)
y13=y12+0.0304*COS((513197.9*T+ 222.5)*DEG)
y14=y13+0.0154*COS((75870*T+41)*DEG)
y15=y14+0.0125*COS((1443603*T+52)*DEG)
y16=y15+0.011*COS((489205*T+142)*DEG)
y17=y16+0.0107*COS((1303870*T+246)*DEG)
y18=y17+0.01*COS((1431597*T+315)*DEG)
y19=y18+0.0085*COS((826671*T+111)*DEG)
y20=y19+0.0079*COS((449334*T+188)*DEG)
y21=y20+0.0068*COS((926533*T+323)*DEG)
y22=y21+0.0052*COS((31932*T+107)*DEG)
y23=y22+0.005*COS((481266*T+205)*DEG)
y24=y23+0.004*COS((1331734*T+283)*DEG)
y25=y24+0.004*COS((1844932*T+56)*DEG)
y26=y25+0.004*COS((133*T+29)*DEG)
y27=y26+0.0038*COS((1781068*T+21)*DEG)
y28=y27+0.0037*COS((541062*T+259)*DEG)
y29=y28+0.0028*COS((1934*T+145)*DEG)
y30=y29+0.0027*COS((918399*T+182)*DEG)
y31=y30+0.0026*COS((1379739*T+17)*DEG)
y32=y31+0.0024*COS((99863*T+122)*DEG)
y33=y32+0.0023*COS((922466*T+163)*DEG)
y34=y33+0.0022*COS((818536*T+151)*DEG)
y35=y34+0.0021*COS((990397*T+357)*DEG)
y36=y35+0.0021*COS((71998*T+85)*DEG)
y37=y36+0.0021*COS((341337*T+16)*DEG)
y38=y37+0.0018*COS((401329*T+274)*DEG)
y39=y38+0.0016*COS((1856938*T+152)*DEG)
y40=y39+0.0012*COS((1267871*T+249)*DEG)
y41=y40+0.0011*COS((1920802*T+186)*DEG)
y42=y41+0.0009*COS((858602*T+129)*DEG)
y43=y42+0.0008*COS((1403732*T+98)*DEG)
y44=y43+0.0007*COS((790672*T+114)*DEG)
y45=y44+0.0007*COS((405201*T+50)*DEG)
y46=y45+0.0007*COS((485333*T+186)*DEG)
y47=y46+0.0007*COS((27864*T+127)*DEG)
y48=y47+0.0006*COS((111869*T+38)*DEG)
y49=y48+0.0006*COS((2258267*T+156)*DEG)
y50=y49+0.0005*COS((1908795*T+90)*DEG)
y51=y50+0.0005*COS((1745069*T+24 *DEG)
y52=y51+0.0005*COS((509131*T+242)*DEG)
y53=y52+0.0004*COS((39871*T+223)*DEG)
y54=y53+0.0004*COS((12006*T+187)*DEG)

Y=y54%360.0
もしYが0より小さいと(Y+360)%360

【太陽視横径計算】

Ts=(MJD-51544.5+ delta)/365.25

ys=280.4603+360.00769*Ts
ys1=ys+(1.9146-0.00005*Ts)*SIN((359.991*Ts+357.538)*DEG)
ys2=ys1+0.0200*SIN((719.981*Ts+355.05)*DEG)
ys3=ys2+0.0048*SIN((19.341*Ts+234.95)*DEG)
ys4=ys3+0.0020*SIN((329.64*Ts+247.1)*DEG)
ys5=ys4+0.0018*SIN((4452.67*Ts+297.8)*DEG)
ys6=ys5+0.0018*SIN((0.20*Ts+251.3)*DEG)
ys7=ys6+0.0015*SIN((450.37*Ts+343.2)*DEG)
ys8=ys7+0.0013*SIN((225.18*Ts+81.4)*DEG)
ys9=ys8+0.0008*SIN((659.29*Ts+132.5)*DEG)
ys10=ys9+0.0007*SIN((90.38*Ts+153.3)*DEG)
ys11=ys10+0.0007*SIN((30.35*Ts+206.8)*DEG)
ys12=ys11+0.0006*SIN((337.18*Ts+29.8)*DEG)
ys13=ys12+0.0005*SIN((1.50*Ts+207.4)*DEG)
ys14=ys13+0.0005*SIN((22.81*Ts+291.2)*DEG)
ys15=ys14+0.0004*SIN((315.56*Ts+234.9)*DEG)
ys16=ys15+0.0004*SIN((299.30*Ts+157.3)*DEG)
ys17=ys16+0.0004*SIN((720.02*Ts+21.1)*DEG)
ys18=ys17+0.0003*SIN((1079.97*Ts+352.5)*DEG)
ys19=ys18+0.0003*SIN((44.43*Ts+329.7)*DEG)

YS=ys19%360.0
もしYSが0より小さいときは(YS+360.0)%360.0

【月齢計算】

MJD=修正ユルウス通日
dif=12.1818
rdif=360/12.1818

dy=月の視横径(Y)-太陽視横径(TS)

mjdc=MJD

mjdb=mjc-(dy/dif)

月齢=MJD-mjdc

月齢が0より小さいと
(mjdb-rdif)をMJDとして月の視横径(Y)と太陽視横径(TS)も含め再計算する。

この式を19個作成してdyが0に一番近い列の月齢を月齢とする。

エクセルの図で説明します。

行2に日付と時間(○時○分○秒)を入力(リンク)します。

mjdセルC4)の数式「=(INT(365.25*((YEAR(B2))-(IF((MONTH(B2))<3,1,0))))+INT(((YEAR(B2))-(IF((MONTH(B2))<3,1,0)))/400)-INT(((YEAR(B2))-(IF((MONTH(B2))<3,1,0)))/100)+INT(30.59*(((MONTH(B2))+(IF((MONTH(B2))<3,12,0)))-2))+(DAY(B2))-678912)

MJDセルC5)数式「=C4+C2/24+D2/1440+E2/86400-0.375
difセルC7)「12.1818
rdifセルC9)「=360/12.1818

mjdcセルC11)数式「=C5」 セルD11の数式は「=C22」になります。

YセルC13」数式「=C90
※月の視横径計算は「セルC29:C90」で上記の【月の視横径計算】計算式で計算しています。

YSセルC15)数式「=C121
※太陽の視横径計算は「セルC96:C121」で上記の【太陽視横径計算】計算式で計算しています。

dyセルC17)数式「=C13-C15
mjdbセルC19)数式「=C11-(C17/C7)

月齢セルC21)数式「=C11-C19

月齢が0(ゼロ)より小さくなるとmjdb(セルC19)からrdif(セルC9)をマイナスします。
また、月齢が29.8より大きい時はmjdbにrdifをプラスします。
セルC22)数式「=IF(C21<0,IF(C21<0,C19-C9,C19),IF(29.8<C21,C19+C9,C19))

この式を列CからUまで19個作成します。

この19の式の中でdy(行17)の数字が一番0(ゼロ)に近い列の月齢を求める日時の月齢とします。

http://park12.wakwak.com/~maki/sunmoon.htm
のサイトの計算と少し違っていますが、ほぼ近い値が出ているので良しとしました。
完成品はこちらでダウンロードできます。【月齢旧暦計算】(zip)クリックするとダウンロードされます。


スポンサーリンク

-エクセル

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

エクセル小技

エクセルExcelのちょっとした便利なことを紹介します。 年のところに数字を入力した時に○○○○年と表示させる方法 例 入力「2016」→ 表示「2016年」 目的のセルを右クリック→セルの書式設定 …

no image

エクセルで曜日を色分けするいろいろな方法と注意

エクセルで曜日を色分けする方法は、条件付き書式設定でします。 しかし、この時に注意することがあります。 曜日をどのように表示させるのかで条件付き設定のやり方も変わってきます。 初めのころは、うまく行か …

エクセル小技2

  エクセルExcelの簡単な便利なことをまとめの第2弾です。 「$」を入れる意味 例えば 1行目の年と月を変えれば下の表(図1)の年と月が代わるようするとします。 図1   表1 …

no image

エクセルのオートフィルをさせたくない場合の方法

エクセルに備わっているオートフィルは非常に便利な機能です。 しかし、たまに数式が切り分かってほしくない時はないですか。 長い数式の位置を変えたいとき「$」を付けたり初めから数式を作るのはちょっと面倒だ …

エクセルで旧暦計算

エクセルでマクロを使わず出来るだけ正確に月齢計算と旧暦を求めてみました。 旧暦の毎月の1日は月齢が0(ゼロ)の日になるので、旧暦を求める為には正確な月齢が必要になってきます。 スポンサーリンク はじめ …

カテゴリー