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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

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

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

エクセルで九星計算

    エクセルでカレンダーを作成しようと調べていたら九星のこともあったので調べてみました。 また、エクセルで九星が日付を入力すると自動表示される方法を考えていましたが、なんとか完 …

エクセル小技2

  エクセルExcelの簡単な便利なことをまとめの第2弾です。 目次1 「$」を入れる意味2 エクセルの背景2.1 背景の挿入2.2 画像を上に置く方法 「$」を入れる意味 例えば 1行目の …

no image

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

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

no image

圧縮解答ソフトLhaplusの使い方

ソフトやファイルをダウンロードするときは、圧縮されていることがほとんどです。 その圧縮ファイルは解凍しなければいけません。 ここでは圧縮ファイルを解凍する方法を説明します。 スポンサーリンク 目次1 …

カテゴリー

最近のコメント

    アーカイブ