你是不是经常遇到这种情况?领导突然要你整理一份带农历日期的报表,或者家里老人过生日要查农历,结果手忙脚乱翻老黄历?别慌!今天我就来教你怎么用Excel把公历日期自动转成农历,保证看完就能上手,连隔壁60岁的老会计都夸好用!
说实话,我以前也觉得这功能没啥用,直到有次被老板临时要求做带农历的排班表...那叫一个手忙脚乱啊!后来发现这个技能简直太实用了:做节假日统计、排班表、生日提醒,甚至算节气都特别方便。最重要的是,学会这个公式能让你在同事面前显得特别专业,升职加薪说不定就靠它了!
在开始之前,咱们得先确认几个事:
- Excel版本:2016及以上版本最好用,WPS也能用但可能有点小差别
- 日期格式:确保你的公历日期是标准格式,比如"2025/4/28"
- 宏安全性:要允许运行宏,这个后面会详细说
对了,如果你打开Excel发现公式栏是灰色的,别慌!先检查下文件是不是".xlsm"格式,不是的话就另存为这个格式。这个细节特别容易忽略,我第一次用的时候就栽在这了。
重点来了!其实Excel本身没有直接转农历的函数,但我们可以用VBA自定义函数。别被"VBA"吓到,跟着我做就行:
注意啊,代码太长了我就没全放出来,你可以在百度搜"Excel农历转换VBA代码",找个靠谱的完整版。重点是要理解这个原理:我们创建了一个叫LunarDate的自定义函数,以后就能像用SUM那样用它了。
现在假设A1单元格是"2025/4/28",我们在B1输入"=LunarDate(A1)",回车就能看到"乙巳年三月初一"。是不是超简单?但等等,如果显示NAME?错误怎么办?
常见问题排查:
- 没保存为.xlsm格式
- 宏安全性设置太高
- 代码复制时漏了符号
- 函数名拼写错误
我第一次用时就被宏安全性坑了,改设置的方法:文件-选项-信任中心-信任中心设置-宏设置-启用所有宏。当然用完记得改回来,安全第一嘛!
光会转日期多没意思,咱们来点高级的!比如要把农历显示成"2025年4月28日(农历三月初一)"这种格式,可以用:
=TEXT(A1,"yyyy年m月d日")&"(农历"&LunarDate(A1)&")"
再比如要做生日提醒,可以用条件格式设置农历生日前三天变红色。具体操作:选中日期列-开始-条件格式-新建规则-使用公式-输入"=MONTH(LunarDate(A1))=3",然后设置格式。这个3就是农历三月,你可以改成任何月份。
Q:为什么我的1900年前的日期转换不对?
A:因为Excel的日期系统是从1900年开始的,更早的得用特殊方法处理。不过现在谁还用1900年前的日期啊...
Q:能转回公历吗?
A:可以!再写个反向转换函数就行,原理差不多。不过说实话反向用得少,你要真需要我再单独写教程。
Q:手机Excel能用吗?
A:安卓版勉强可以,但iOS版可能不行,苹果对VBA支持不太好。建议在电脑上做好再传到手机查看。
说实话这个功能我学了三年都没用上,结果上个月连续三个项目都要用,真是书到用时方恨少啊!建议你们先收藏起来,说不定哪天突然就要用。另外提醒下,不同版本的Excel可能有点小差异,遇到问题多百度或者问我,千万别自己瞎折腾半天。
最后说个冷知识:其实农历转换最准的还是国家授时中心的算法,不过对普通人来说Excel这个精度完全够用了。要是给航天器算轨道可能差点意思,但咱们做个生日提醒绰绰有余啦!