有時候我們在輸入日期數據的時候,往往需要輸入農歷的日期,但已經輸入的日期是公歷的日期,那么該怎么轉換呢?
接下來我們將為大家如何利用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