ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: zopey

[分享] 24节气公式

[复制链接]
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2018-1-9 10:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
提示: 作者被禁止或删除 内容自动屏蔽

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-1-11 09:11 | 显示全部楼层
'地球自转修正项 需完善
JD = J2000 + t * 36525 - (64.7 + (yy - 2005) * 0.4) / 86400 + 8 / 24修改为
JD = J2000 + t * 36525 - deltaT(yy) / 86400 + 8 / 24


  1. Public Function deltaT(year As Integer)

  2.    If year >= 2005 And year < 2014 Then
  3.       deltaT = 64.7 + (year - 2005) * 0.4
  4.    ElseIf year >= 2014 And year < 2114 Then
  5.       deltaT = -20 + 31 * ((year - 1820) / 100) ^ 2 + (year - 2114) * ((-20 + 31 * ((2014 - 1820) / 100) ^ 2) - (64.7 + (2014 - 2005) * 0.4)) / 100
  6.    ElseIf year > 2114 Then
  7.       deltaT = -20 + 31 * ((year - 1820) / 100) ^ 2
  8.    ElseIf year >= -4000 And year < -500 Then
  9.       y1 = -4000: y2 = -500
  10.       t = (year - y1) / (y2 - y1) * 10
  11.       A = 108371.7: B = -13036.8: C = 392: d = 0
  12.       deltaT = A + B * t + C * t ^ 2 + d * t ^ 3
  13.    ElseIf year >= -500 And year < -150 Then
  14.       y1 = -500: y2 = -150
  15.       t = (year - y1) / (y2 - y1) * 10
  16.       A = 17201: B = -627.82: C = 16.17: d = -0.3413
  17.       deltaT = A + B * t + C * t ^ 2 + d * t ^ 3
  18.    ElseIf year >= -150 And year < 150 Then
  19.       y1 = -150: y2 = 150
  20.       t = (year - y1) / (y2 - y1) * 10
  21.       A = 12200.6: B = -346.41: C = 5.403: d = -0.1593
  22.       deltaT = A + B * t + C * t ^ 2 + d * t ^ 3
  23.    ElseIf year >= 150 And year < 500 Then
  24.       y1 = 150: y2 = 500
  25.       t = (year - y1) / (y2 - y1) * 10
  26.       A = 9113.8: B = -328.13: C = -1.647: d = 0.0377
  27.       deltaT = A + B * t + C * t ^ 2 + d * t ^ 3
  28.    ElseIf year >= 500 And year < 900 Then
  29.       y1 = 500: y2 = 900
  30.       t = (year - y1) / (y2 - y1) * 10
  31.       A = 5707.5: B = -391.41: C = 0.915: d = 0.3145
  32.       deltaT = A + B * t + C * t ^ 2 + d * t ^ 3
  33.    ElseIf year >= 900 And year < 1300 Then
  34.       y1 = 900: y2 = 1300
  35.       t = (year - y1) / (y2 - y1) * 10
  36.       A = 2203.4: B = -283.45: C = 13.034: d = -0.1778
  37.       deltaT = A + B * t + C * t ^ 2 + d * t ^ 3
  38.    ElseIf year >= 1300 And year < 1600 Then
  39.       y1 = 1300: y2 = 1600
  40.       t = (year - y1) / (y2 - y1) * 10
  41.       A = 490.1: B = -57.35: C = 2.085: d = -0.0072
  42.       deltaT = A + B * t + C * t ^ 2 + d * t ^ 3
  43.    ElseIf year >= 1600 And year < 1700 Then
  44.       y1 = 1600: y2 = 1700
  45.       t = (year - y1) / (y2 - y1) * 10
  46.       A = 120: B = -9.81: C = -1.532: d = 0.1403
  47.       deltaT = A + B * t + C * t ^ 2 + d * t ^ 3
  48.    ElseIf year >= 1700 And year < 1800 Then
  49.       y1 = 1700: y2 = 1800
  50.       t = (year - y1) / (y2 - y1) * 10
  51.       A = 10.2: B = -0.91: C = 0.51: d = -0.037
  52.       deltaT = A + B * t + C * t ^ 2 + d * t ^ 3
  53.    ElseIf year >= 1800 And year < 1830 Then
  54.       y1 = 1800: y2 = 1830
  55.       t = (year - y1) / (y2 - y1) * 10
  56.       A = 13.4: B = -0.72: C = 0.202: d = -0.0193
  57.       deltaT = A + B * t + C * t ^ 2 + d * t ^ 3
  58.    ElseIf year >= 1830 And year < 1860 Then
  59.       y1 = 1830: y2 = 1860
  60.       t = (year - y1) / (y2 - y1) * 10
  61.       A = 7.8: B = -1.81: C = 0.416: d = -0.247
  62.       deltaT = A + B * t + C * t ^ 2 + d * t ^ 3
  63.    ElseIf year >= 1860 And year < 1880 Then
  64.       y1 = 1860: y2 = 1880
  65.       t = (year - y1) / (y2 - y1) * 10
  66.       A = 8.3: B = -0.13: C = -0.406: d = 0.0292
  67.       deltaT = A + B * t + C * t ^ 2 + d * t ^ 3
  68.    ElseIf year >= 1880 And year < 1900 Then
  69.       y1 = 1880: y2 = 1900
  70.       t = (year - y1) / (y2 - y1) * 10
  71.       A = -5.4: B = 0.32: C = -0.183: d = 0.0173
  72.       deltaT = A + B * t + C * t ^ 2 + d * t ^ 3
  73.    ElseIf year >= 1900 And year < 1920 Then
  74.       y1 = 1900: y2 = 1920
  75.       t = (year - y1) / (y2 - y1) * 10
  76.       A = -2.3: B = 2.06: C = 0.169: d = -0.0135
  77.       deltaT = A + B * t + C * t ^ 2 + d * t ^ 3
  78.    ElseIf year >= 1920 And year < 1940 Then
  79.       y1 = 1920: y2 = 1940
  80.       t = (year - y1) / (y2 - y1) * 10
  81.       A = 21.2: B = 1.69: C = -0.304: d = 0.0167
  82.       deltaT = A + B * t + C * t ^ 2 + d * t ^ 3
  83.    ElseIf year >= 1940 And year < 1960 Then
  84.       y1 = 1940: y2 = 1960
  85.       t = (year - y1) / (y2 - y1) * 10
  86.       A = 24.2: B = 1.22: C = -0.064: d = 0.0031
  87.       deltaT = A + B * t + C * t ^ 2 + d * t ^ 3
  88.    ElseIf year >= 1960 And year < 1980 Then
  89.       y1 = 1960: y2 = 1980
  90.       t = (year - y1) / (y2 - y1) * 10
  91.       A = 33.2: B = 0.51: C = 0.231: d = -0.0109
  92.       deltaT = A + B * t + C * t ^ 2 + d * t ^ 3
  93.    ElseIf year >= 1980 And year < 2000 Then
  94.       y1 = 1980: y2 = 2000
  95.       t = (year - y1) / (y2 - y1) * 10
  96.       A = 51: B = 1.29: C = -0.026: d = 0.0032
  97.       deltaT = A + B * t + C * t ^ 2 + d * t ^ 3
  98.    ElseIf year >= 2000 And year < 2005 Then
  99.       y1 = 2000: y2 = 2005
  100.       t = (year - y1) / (y2 - y1) * 10
  101.       A = 63.87: B = 0.1: C = 0: d = 0
  102.       deltaT = A + B * t + C * t ^ 2 + d * t ^ 3
  103.    Else
  104.       deltaT = 108372
  105.    End If

  106. End Function
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-1-11 09:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
比对了911查询网的节气数据,基本一致。

24节气公式(年份修订).rar (18.62 KB, 下载次数: 380)

TA的精华主题

TA的得分主题

发表于 2018-1-11 10:35 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-1-12 10:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zopey 发表于 2018-1-11 09:23
比对了911查询网的节气数据,基本一致。

谢谢老师分享!已经很完善啦!
白玉微瑕的是:
1900——2100间只有此一不足!
1923-2-20
应为
1923-2-19
还请老师修正为盼!谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-1-12 11:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这个问题很难说清  雨水: 1923年02月20日00时00分16秒1923-2-19 23:59:40  计算误差总是有的,究竟谁对呢?
0011.JPG 0022.JPG


TA的精华主题

TA的得分主题

发表于 2018-1-12 11:43 | 显示全部楼层
zopey 发表于 2018-1-12 11:36
这个问题很难说清  雨水: 1923年02月20日00时00分16秒1923-2-19 23:59:40  计算误差总是有的,究竟谁对呢? ...

老师说的有道理!
感觉还是以天文台为准好些!
请看附件
1923.rar (46.92 KB, 下载次数: 224)

TA的精华主题

TA的得分主题

发表于 2019-1-16 08:33 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-16 15:02 | 显示全部楼层
'第1步迭代
t = 0
L0 = (48650621.66 + 6283319653.318 * t) / 10 ^ 7

'第2步迭代
t = t + (W - L0) / v0
t2 = t * t
l1 = (48950621.66 + 6283319653.318 * t + 53 * t2 _

===============

48650621.66  和 48950621.66  是同一个参数,所以这里有个 笔误。
似乎对最后的 迭代结果也没影响。

TA的精华主题

TA的得分主题

发表于 2019-8-9 08:15 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-19 19:33 , Processed in 0.045445 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表