做一份古风古韵的日程表,如何在Excel
2023/4/11 来源:不详老祖宗取名的本事真的是碾压现代人,譬如二十四节气,短短两个字,便道尽物候变化、岁月静好,如果在日程表中加上节气名,是不是也能治愈一下某时某刻被PUA的小心灵?
在演示制作过程之前,先科普两个关于二十四节气的小知识。
1、二十四节气是阴历还是阳历?
二十四节气是我们老祖宗的历法,它是根据太阳在黄道(即地球绕太阳公转的轨道)上的位置来划分的,所以不能归入依据月相变化的阴历,应该叫做农历。这也解释了为什么二十四节气的时间和我们现在普遍使用的公历非常吻合。
2、清明节到底是4号还是5号?
清明节是唯一用节气命名的节日,二十四节气的时间是根据太阳照在黄道上的角度确定的,不同年份可能会有1-2天的差异。清明节是4号还是5号就要看当年的历法了。
现在进入今天的主题,在(用Excel制作一份有万年历效果的日程表模板)基础之上,给日程表添加二十四节气名称。
首先,要确定不同年份二十四节气的日期,这里有一个计算该日期的公式,叫作“通式寿星公式”,写作:(Y*D+C)-L。准确的说,这个公式计算的是几号,因此实际使用时需要取整。其中:
Y代表年份的后两位数。
D是一个固定值,等于0.。
C也是一个固定值,但每世纪每节气的C值不同(本例子提供的是21世纪各节气的C值)。
L代表闰年数,“小寒”、“大寒”、“立春”和“雨水”四个节气闰年计算方法为((年份后两位-1)/4);其余节气为(年份后两位/4)。
准备一张工作表计算二十四节气的日期。
C值是固定值,二十四节气的月份分布也是固定不变的,所以月份直接键入即可,在E列键入通式寿星公式,具体写作“=INT((RIGHT($B$2,2)*0.+C4))-INT((RIGHT($B$2,2)-1)/4)”。其中:
“RIGHT($B$2,2)”是取年份的后面两位数,“”年返回“21”。
INT()函数用来取整。
根据“通式寿星公式”算出了二十四节气日期中的“日”。这些日子大部分都是与历法吻合的,但有个别例外,计算结果与实际历法有“+/-1天”的差异,单元格“I3:K13”就是牛人归纳的例外情况的清单。
在“修正日”一列键入公式计算这些例外考虑进去后的日期。
为了方便“修正日”的计算,首先增加一列唯一值的“节气+年份”合并列。
修正日公式写作“=IFERROR(INDEX($L$4:$L$13,MATCH(B4$B$2,$K$4:$K$13,0)),0)+E4”,意思是在例外情况的表格中查找是否有当前行的节气和年份,如果有,则对应的“日期调整”天数加上之前计算的日期,如果没有,则只加上之前计算的日期。其中:
B4$B$2将查询的节气和年份合并,与例外情况的合并列保持一致,因为年份单元格的地址是固定的,所以使用绝对引用。
MATCH(B4$B$2,$K$4:$K$13,0)函数返回当前行节气和年份合并后的字段在例外情况的“节气+年份”列中出现的序列号即排在该数列的第几位,最后一个参数“0”表示精确查找。注意年份和数组要绝对引用。
INDEX($L$4:$L$13,MATCH(B4$B$2,$K$4:$K$13,0))函数则返回例外情况中对应的L列即“日期调整”列的值。
IFERROR()函数保证INDEX()和MATCH()函数没有匹配到数据时公式不会报错,而是返回一个空值。
“修正日”完成后,在“日期”列键入公式“=DATE($B$2,D4,F4)”生成该节气的完整日期。
最后将单元格B2设置为公式“=日程表!A2”,与日程表的年份保持一致。
二十四节气表格准备完毕,在日程表中用两个公式就可以得到我们需要的效果了。
首先,为了简化公式,在日程表中每周的日历下插入一行显示节气,删除了两行之间的框线,所以视觉上好像一行。
单元格A7键入公式“=IFERROR(INDEX(二十四节气!$B$4:$B$27,MATCH(日程表!A6,二十四节气!$G$4:$G$27,0)),)”,意思是在“二十四节气”工作表中查找日期,如果有就返回对应的节气,否则就返回空值。
为了凸显忙活这么半天的效果,用“条件格式”将节气名称改为绿色显示。
我们将月份改成“5”月,看看5月是什么节气等着我们。
日程表上出现了“立夏”和“小满”,小满麦渐黄,夏至稻花香,原来夏天快要到了呀!
最后老实坦白,日程表中的古诗不是自动更新的,是手工加上撑排场的,等有闲情雅致的时候,将二十四节气的古诗找全,再增加这个功能吧。