如何在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"))&"日"
這樣的結果是符合我們中國人的習慣的,有興趣的朋友可以試試。(END)
點擊上圖鏈接了解
學好Excel,做個好表哥表姐~當你在工作遇到有趣的Excel案例及問題,歡迎@我,相互交流並分享給e友~~~
e友
老墨,我有個Excel問題......交給我,@moguho_e,或者2838002@qq.com,第一時間處理,並在公眾號中分享給大家!也可以加,
推薦閱讀:
※優E實現「泛在學習」
※一年的願望你實現了嗎
※比較常見容易實現的醒酒食物
※張鋒再發CRISPR新突破!「魔剪」可實現同時編輯4個基因
※陽台實現了我的花園夢,這輩子算沒白活!