當前位置:吉日网官网 - 黃道吉日 - EXCEL陽歷轉陰歷公式?

EXCEL陽歷轉陰歷公式?

Excel內置函數不能完美實現,至少閏月會有問題。

妳只能考慮用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)'輸出結果

結束功能

  • 上一篇:6月份登記結婚。
  • 下一篇:【黃道吉日】2065438+7月65438+6月08日,公歷查詢?
  • copyright 2024吉日网官网