ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 用Excel公式做的日历,完美显示了农历、24节气及公历农历节假日

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2015-7-30 14:55 | 显示全部楼层 |阅读模式
本帖最后由 半榻茶烟 于 2015-8-1 19:06 编辑

    关于公历和农历日期的转换问题。Excel提供的"[$-130000]"虽然能转换公历为农历,但大小月的问题实在处理的太马虎!中国的农历大小月设置,虽然理论上说起来有规律,但没人把它数字化(不知道谁有这个能力)。我统计了1999年至2050年的大小月,发现Excel提供的"[$-130000]"参数转换结果有20个区间大小月搞反了,也就是有600天的日期相差了1天。而且过了2050年12月31日,就像发神经一样了!不过还是感谢微软,在这个基础上,通过数组纠正误差月份,解决了农历转公历的问题。其中有个特例是2020/3/23,这个日期要转成2020/2/30,这是个“非法日期”,只能特事特办了。意外之喜是顺带解决了公历转农历的问题,其中还有7个2月末的日期,属于特例,也只能走后门了。过程中走了不少冤枉路,2月末的问题,闰月产生的13月的问题,这些牵涉到数字、文本及日期的格式,看看好像对了,你检查了10年的日期没问题,以为OK了。那你就错了,我把公式一直拉到了2030年,电脑都快瘫了,才发现了哪些特例。谁有空可以检查下,到2050年,不知道有没其他特例。
   关于农历24节气的问题,百度里有的就不啰嗦了。百度可找到2个简单确定节气日期的经验公式:①:INT(Y*D+C)-L,②:365.242*(Y-1900)+6.2+15.22*X-1.9*SIN(0.262*X)。前一个公式完全坑爹!一年24个节气,计算出来有一半以上相差一天。后一个也差不多,但里面有个6.2,我估计应该是根据经验得到的调整系数,我把这个系数再加上0.55,按2015年的节气测算,去掉了绝大部分的误差,但还有一个小雪,怎么也调不好了,否则其它节气又不对了。最后我的办法是统计了2015-2021年所有节气的准确时间,计算出24节气各相邻节气的平均时间间隔,精确到秒,再往前后推算。校对了一些年份的节气,未发现日期错误。目前的日历跨度是2000年至2050年,估计误差近年在前后5-10分钟以内,到2050年校对了下,虽然日期没错误,但时间误差个别达到了一小时。水平有限,只能到这一步了。要精确计算某年的节气时间,且精确到分秒,那是天文高数加编程大神才能干的活!校对了一些年份的节气,未发现日期错误。
-------------------
   日历跨度已扩展到1966-2050年。

日历20150729.rar

69.87 KB, 下载次数: 2741

日历20150801.rar

102.15 KB, 下载次数: 4958

评分

15

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-7-30 15:21 | 显示全部楼层
欢迎“老人”,多回来看看~!
谢谢分享~!

TA的精华主题

TA的得分主题

发表于 2015-7-30 16:40 | 显示全部楼层
哎呀,2003版本打不开呢,多好的东西啊,呜呜呜.........

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-7-30 21:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
了了书生 发表于 2015-7-30 16:40
哎呀,2003版本打不开呢,多好的东西啊,呜呜呜.........

看样子现在用2003的还不在少数啊。工作中常碰到这样的事:你这文件我打不开啊!
对于2003,没什么好留恋的了吧?如实在不肯抛弃,百度一下:Excel2003打不开2007怎么办?找个地方下载个兼容包吧。

TA的精华主题

TA的得分主题

发表于 2015-7-30 22:29 | 显示全部楼层
半榻茶烟 发表于 2015-7-30 21:15
看样子现在用2003的还不在少数啊。工作中常碰到这样的事:你这文件我打不开啊!
对于2003,没什么好留恋 ...

一直使用2003,主要是喜欢word的界面,虽然也曾用过一段时间的2010版本,但word里面的很多按钮让人摸不着头脑,还经常找不到在哪才能找到,所以主要是留恋word2003,才一直保持至今而不肯放弃。

至于excel2010,跟excel2003版本也差不多,但功能更强,兼容包我早已下载到,里面有个IFERROR函数,却是2003没有的。

TA的精华主题

TA的得分主题

发表于 2015-7-30 22:35 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-7-31 13:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
就我目前所知,之前一直没有完美的公转农和农转公解决办法,本贴也只是解决了2000-2050年之间的公转农和农转公,感觉还不是最完美。哪些坛友比较空闲的,能不能把1900/1/1至1998/12/31之间农历大小月和闰月的数据统计一下?希望本坛大神级别的高手关注一下本贴,把这个公转农和农转公的问题给予完美的解决。

TA的精华主题

TA的得分主题

发表于 2015-8-1 00:58 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-8-1 12:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
半榻茶烟 发表于 2015-7-31 13:15
就我目前所知,之前一直没有完美的公转农和农转公解决办法,本贴也只是解决了2000-2050年之间的公转农和农 ...

老师是帮微软解决转换的思路的节奏,
瞎说一下,不要介意
用参数补偿是没有办法的办法
以太阳、地球、月亮自转和公转周期的规律去定义日期的转换
那么就好办了,只是这些关系要理清楚估计很头痛~


阴历和阳历的区别和关系:

阳历也就是公历,它是国际通用的。阳历以地球绕太阳转一圈的时间定做一年,共365天5小时48分46秒。平年只计365天这个整数,不计尾数;一年分做12个月,大月31天,小月30天,二月只有28天。四年的尾数积累起来共1天光景,加在第四年的二月里,这一年叫做闰年。所以闰年的二月有29天。阴历以月亮圆缺一次的时间定做一个月,共29天半。为了算起来方便,大月定做30天,小月29天,一年12个月中,大小月大体上交替排列。阴历一年只有354天左右,也没有平年闰年的差别。

阴历不考虑地球绕太阳的运行,因此使得四季的变化在阴历上就没有固定的时间,它不能反映季节,这是一个很大的缺点。为了克服这个缺点,后来人们定了一个折衷的历,就是所谓阴阳合历。现在我国还在使用的夏历(也有人叫它农历或阴历),就是这种阴阳合历。它跟阴历一样,也以月亮圆缺一次的时间定做一个月,也是大月30天,小月29天,可是它又用加闰月的办法,使得平均每年的天数跟阳历全年的天数相接近,来调整四季。夏历约每过二、三年多一个闰月。“阴历”又名“太阴历”,系以月球绕行地球一周为一月,再配合地球绕日一周之时数为一年,实际上等于阴阳合历,我国在民国元年前采用此历,为与现行之历相对称,故名之曰“旧历”。一般人以为阴历适合于农家,而名之日“农历”。

月球运行的轨道,名曰白道,白道与黄道同为天体上之两大圆,以五度九分而斜交,月球绕地球一周,出没于黄道者两次,历二十七日七小时四十三分十一秒半,为月球公转一周年所需之时间,谓之“恒星月”。唯当月球绕地球之时,地球因公转而位置亦有变动,计前进二十七度余,而月球每日行十三度十五分,故月球自合朔,全绕地球一周,复至合朔,实需二十九日十二时四十四分二秒八,谓之“朔望月”,习俗所谓一月,即指朔望月而言。

因每月天数不能有奇零,故阴历一个月为二十九日或三十日。每月以合朔之日为首,即以朔日为初一日。每年以接近立春之朔日为岁首。

地球绕日一周,即月球绕地球十二次又三分之一,一年内之月数不能有奇零,故一年十二个月,仅三百五十四日,与岁实相比较,约余十一日,积至三年,余三十三日,故每三年须置一闰月,尚余三日或四日,再积二年,共余二十五日或二十六日,可置一闰月,平均计算,每十九年须置七闰。以有节无气之月为闰月,有闰月之年为闰年,闰年有十三个月,平年则十二个月。

TA的精华主题

TA的得分主题

发表于 2015-8-1 12:43 | 显示全部楼层
13732120571 发表于 2015-8-1 12:38
老师是帮微软解决转换的思路的节奏,
瞎说一下,不要介意
用参数补偿是没有办法的办法

I Dont Know You说什么,实在看不懂啊,能不能用英语翻译一下{:soso_e105:}
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-26 12:18 , Processed in 0.044307 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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