Excel实现公历农历转换的三种方法

【导读】:

有时候我们在输入日期数据的时候,往往需要输入农历的日期,但已经输入的日期是公历的日期,那么该怎么转换呢?

接下来我们将为大家如何利用excel函数进行将公历日期转化为农历日期!

 

一、简单版

下表中B2单元格就是第一种情况,“2016-9-17”表示农历是九月十七日。

该公式是:=TEXT(A2,"[$-130000]YYYY-M-D")。TEXT()用来转化文本格式,这个公式的关键是:[$-130000],它是Excel中阳历转化农历的参数,不过它存在一个问题就是没法计算闰月,估计老外无法理解中国人闰月的概念,凡是闰年,它直接表示一年13个月,道理是一样的。

  

二、进阶版(中文呈现)

上表C2单元格,相比较B2单元格呈现就有了进阶,以中文呈现,并且以天干地支表现年份。

公式相对之前肯定复杂:

=MID(" 甲乙丙丁戊己庚辛壬癸",MOD(TEXT(A2,"[$-130000]e")-4,10)+1,1)&MID("子丑寅卯辰巳午未申酉 戌亥",MOD(TEXT(A2,"[$-130000]e")-4,12)+1,1)&"年"&TEXT(A2," [$-130000][DBNum1]m月d日")

 

我们可以分解为两大部分:

1)计算年份:MID(" 甲乙丙丁戊己庚辛壬癸

",MOD(TEXT(A2,"[$-130000]e")-4,10)+1,1)&MID("子丑寅卯辰巳午未申酉 戌亥",MOD(TEXT(A2,"[$-130000]e")-4,12)+1,1)&"年",这里加了MID()文本提取函数来获取天干地支。

 

2)计算月日:TEXT(A2," [$-130000][DBNum1]m月d日"),这里增加了参数[DBNum1],表示数值以“一、而二、三......”中文格式显示。两者组合一起的就是C列结果。

 

三、完美版

作为中国人,我们知道“一月”不叫“一月”,叫“正月”;“十二月”不叫“十二月”,叫“腊月”;同样每月前10天,是初一、初二......20日开始是廿、廿一......30日是卅等等。如何更完美地呈现,在这里将进阶版公式再度分解,加上判断,然后再组合就实现了效果,公式:

=MID(" 甲乙丙丁戊己庚辛壬癸",MOD(TEXT(A2,"[$-130000]e")-4,10)+1,1)&MID("子丑寅卯辰巳午未申酉 戌亥",MOD(TEXT(A2,"[$-130000]e")-4,12)+1,1)&"年"&IF(TEXT(A2," [$-130000]m")*1=12," 腊",IF(TEXT(A2," [$-130000]m")*1=1," 正",TEXT(A2," [$-130000][DBNum1]m")))&"月"&IF(TEXT(A2," [$-130000]d")-9<=1,"初",IF(TEXT(A2," [$-130000]d")-29>=1,"卅",IF(TEXT(A2," [$-130000]d")-19>=1,"廿","十")))&IF(RIGHT(TEXT(A2," [$-130000]d"),1)*1=0,"",TEXT(RIGHT(TEXT(A2," [$-130000]d"),1)*1,"[DBNum1]d"))&"日"

 

1)年份公式:MID(" 甲乙丙丁戊己庚辛壬癸",MOD(TEXT(A2,"[$-130000]e")-4,10)+1,1)&MID("子丑寅卯辰巳午未申酉 戌亥",MOD(TEXT(A2,"[$-130000]e")-4,12)+1,1)&"年"

 

2)月份公式:IF(TEXT(A2," [$-130000]m")*1=12," 腊",IF(TEXT(A2," [$-130000]m")*1=1," 正",TEXT(A2," [$-130000][DBNum1]m")))&"月"3)日期公式:IF(TEXT(A2," [$-130000]d")-9<=1,"初",IF(TEXT(A2," [$-130000]d")-29>=1,"卅",IF(TEXT(A2," [$-130000]d")-19>=1,"廿","十")))&IF(RIGHT(TEXT(A2," [$-130000]d"),1)*1=0,"",TEXT(RIGHT(TEXT(A2," [$-130000]d"),1)*1,"[DBNum1]d"))&"日"

 

  

这样的结果是符合我们中国人的习惯的,有兴趣的朋友可以试试。

 

 

出处:http://www.officedoyen.com/a/excelyingyong/2018/0303/16544.html

posted on   jack_Meng  阅读(29938)  评论(1编辑  收藏  举报

编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
历史上的今天:
2020-04-12 高等数学 ---- 系列文章
2020-04-12 Git系列教程
2018-04-12 五险一金及个税计算器

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

支付宝打赏

主题色彩