妳只能考慮用VBA編程來定制壹個函數。
圖1:效果展示圖:
效果顯示圖
圖2:步驟示意圖:
步驟示意圖
圖3:完整的代碼圖:
步驟:
1.如果文件在。xlsx格式,必須將其保存為啟用宏的工作簿。xlsm格式。
2.按Alt+F11打開代碼編輯器。
3.點擊"插入"-"模塊"、
4.雙擊左欄中的模塊。
5.將代碼粘貼到右側的編輯區域。
6.報告錯誤時,檢查代碼是否變紅。
7.關閉代碼編輯器。
重要提示:
描述1。對於從這裏復制過來的代碼,百度會在行間插入多余的空行。如果代碼因錯誤而變紅,可以刪除行間的空行。
註2。這個代碼也不是萬能的。它受到日期範圍的限制。只能從1921的正月初壹換算到2100的臘月三十,對應的公歷範圍是1921/2/8到2100/2。
註3。在表格中使用公式時,您可以直接在公式中指示日期,也可以引用單元格中的日期。
示例1,具體轉換日期:
=iNlStr(日期(2020,8,18))
示例2,永遠轉換今天的日期:
=iNlStr(TODAY())
示例3,從單元格參考日期轉換:
=iNlStr(A1)
代碼如下,供您復制:
選項顯式
'將公共tf作為布爾值'
公共sZhouJ作為變體“周數組”
“十天幹陣”的變體
公共sDiZhi作為變體‘十二分支陣列’
公sSXiao為變種‘生肖陣’
公共sNlMon作為變體“農歷月數組”
作為變體的公共日“農歷日數組”
作為變體的公共sNlShu“月球數據陣列”
子加載數組()
SZhouJ = Split("*/壹/二/三/四/五/六/天","/")周數組
STiGan = Split(" A/B/C/D/E/F/G/F/N/D ","/")天幹陣。
SDiZhi = Split("子/醜/陰/毛/陳/斯/武/衛/申/尤/徐/海","/)'地心陣
SSXiao = Split("鼠/牛/虎/兔/龍/蛇/馬/羊/猴/雞/狗/豬","/)'生肖陣
SNlMon = Split("*/第壹個月/二月/三月/四月/五月/六月/七月/八月/九月/十月/冬季/第十二個月","/")月份數組
sNlDay = Split( _
" */年級1/2/3/4/5/6/7/8/9/10 " u
& amp"/十壹/十二/十三/十四/十五/十六/十七/十八/十九/二十"
& amp“/21/22/23/24/25/26/27/28/29/30”、“/””
sNlShu = Split( _
" 002635/333387/001701/001748/267701/000694/002391/133423/01175/396438/" & amp;_
" 003402/003749/331177/001453/000694/201326/002350/465197/003221/003402/" & amp;_
" 400202/002901/001386/267611/000605/002349/137515/002709/464533/0065438/" & amp;_
" 002901/330421/001242/002651/199255/001323/529706/003733/001706/398762/" & amp;_
" 002741/001206/267438/002647/0018/204070/003477/461653/001386/002413/" & amp;_
" 330077/001197/002637/268877/003365/53109/002900/002922/398042/002395/" & amp;_
" 001179/267415/002635/661067/001701748/398772/002742/002391/330031/"_
" 001175/00161/200010/003749/527717/001452/002742/332397/002350/003222/" & amp;_
" 268949/003402/003493/133973/001386/464219/000605/002349/334123/002709/" & amp;_
" 002890/267946/002773/592565/0010/002651/395863/001323/002707/265877/" & amp;_
" 001706/002773/133557/001206/397998/002638/003366/335142/03411/001450/" & amp;_
" 200042/002413/723293/00197/002637/399947/003365/003410/334676/002906/" & amp;_
" 001389/133467/00179/464023/002635/002725/333477/001746/002778/199350/" & amp;_
" 002359/526639/001175/06161/396618/003749/001714/267628/002734/002350/" & amp;_
" 203054/003222/465557/003402/003493/330581/001386/002669/264797/001325/" & amp;_
" 529707/002709/002890/399018/002773/001370/267450/002651/001323/202023/" & amp;_
" 001683/462419/001706/002773/330165/001206/002647/264782/003366/531750/" & amp;_
"003410/003498/396650/001389/001198/267421/002637/003349/13800"
標記為“Tf = True”時,數組已被加載。
末端接頭
lstr (idate as date)中的函數為字符串“陽歷到陰歷”。
如果不是tf,則調用加載數組
Dim i%,t & amp,k%,m%,n%,ext%,bit & amp
計算從1921-2-8(即1921中的第壹個月的第壹天)到目標日期的總天數。
t = iDate-# 2/8/1921 #+1
計算農歷年、月、日的值。
做
if Val(sNlShu(m))& lt;4095那麽k = 11否則k = 12
n = k
做
獲取sNlShu(m)的第n個二進制位的值
bit = Val(sNlShu(m))
對於i = 1到n
位=位\ 2
然後
bit = bit Mod 2
計算農歷的天數
如果t & lt= 29 +位
ext = 1
出口Do
如果…就會結束
t = t - 29位
n = n - 1
循環直到n & lt0
如果是ext,那麽退出Do
m = m + 1
循環直到錯誤
計算農歷的三個數值
Dim cy%,cm%,cd%
cy = 1921 + m?農歷年的價值
Cm = k-n+1 '農歷月份值。
cd = t?陰歷日的價值
如果k = 12,則
選擇case val(snlshu(m))65536+1 '來修正cm的值。
案例是=厘米
厘米= 1厘米
案例是& lt厘米
cm = cm - 1
結束選擇
如果…就會結束
計算中文文本
Dim ar(1到5)作為字符串
M = ((cy-4) Mod 60) Mod 10 '天幹指標值。
N = ((cy-4) Mod 60) Mod 12 '地支、生肖指標值。
如果cm & lt1然後ar(1) = "leap "
ar(1)= ar(1)& amp;SNlMon(Abs(cm))'農歷月
Ar(2) = sNlDay(cd)“農歷日”
ar(3) = sTiGan(m)和ampsDiZhi(n)?月球樹幹和樹枝
ar(4) = sSXiao(n)?農歷十二生肖
Ar(5) = sZhouJ(Weekday(iDate,2))'周漢字
匹配輸出結果(提示:數組ar(1到5)***5個元素,可以根據需要自由匹配輸出結果)
iNlStr = ar(3)和amp“年生肖”&;ar(4)和amp”& ampar(1)和ampar(2)和amp“周”&;Ar(5)'輸出結果
結束功能