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(" 甲⼄丙丁戊⼰庚⾟壬癸
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"))&"⽇"
这样的结果是符合我们中国⼈的习惯的,有兴趣的朋友可以试试。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论