困擾大家20年難題被破解了! DeepSeek一鍵生成農(nóng)歷函數(shù)附代碼

如何將公歷轉(zhuǎn)換為農(nóng)歷,這一直是一個大難題,沒有什么好的辦法,之前利用PQ通過獲取API來得到公歷對用的農(nóng)歷,但是無奈效率太低了
最近又有學(xué)員問到類似的問題,跟Deepseek溝通可下,竟然一次就得到正確的代碼了,跟大家分享一下!
一、代碼展示
我們沒有將代碼的結(jié)果設(shè)置為2025年六月初一這樣的格式,為了方便計算,將結(jié)果改成了Excel可以識別的日期格式:2025/6/1 如果遇到閏月的話,則會在最前面添加的閏字,結(jié)果為:閏 2025/6/1
代碼比較長,請大家在電腦端復(fù)制粘貼,手機(jī)端復(fù)制可能會不完整出現(xiàn)錯誤的情況
Public Function NongLi(Optional Gong As Date) As String ' If parameter is empty, return blank If Gong = 0 Then NongLi = "" Exit Function End If Dim MonthAdd(11), NongliData(119) Dim curTime, curYear, curMonth, curDay Dim i, m, n, k, isEnd, bit, TheDate Dim isLeapMonth As Boolean ' 獲取當(dāng)前系統(tǒng)時間 curTime = Gong ' 公歷每月前面的天數(shù) MonthAdd(0) = 0 MonthAdd(1) = 31 MonthAdd(2) = 59 MonthAdd(3) = 90 MonthAdd(4) = 120 MonthAdd(5) = 151 MonthAdd(6) = 181 MonthAdd(7) = 212 MonthAdd(8) = 243 MonthAdd(9) = 273 MonthAdd(10) = 304 MonthAdd(11) = 334 ' 農(nóng)歷數(shù)據(jù) NongliData(0) = 2635 NongliData(1) = 333387 NongliData(2) = 1701 NongliData(3) = 1748 NongliData(4) = 267701 NongliData(5) = 694 NongliData(6) = 2391 NongliData(7) = 133423 NongliData(8) = 1175 NongliData(9) = 396438 NongliData(10) = 3402 NongliData(11) = 3749 NongliData(12) = 331177 NongliData(13) = 1453 NongliData(14) = 694 NongliData(15) = 201326 NongliData(16) = 2350 NongliData(17) = 465197 NongliData(18) = 3221 NongliData(19) = 3402 NongliData(20) = 400202 NongliData(21) = 2901 NongliData(22) = 1386 NongliData(23) = 267611 NongliData(24) = 605 NongliData(25) = 2349 NongliData(26) = 137515 NongliData(27) = 2709 NongliData(28) = 464533 NongliData(29) = 1738 NongliData(30) = 2901 NongliData(31) = 330421 NongliData(32) = 1242 NongliData(33) = 2651 NongliData(34) = 199255 NongliData(35) = 1323 NongliData(36) = 529706 NongliData(37) = 3733 NongliData(38) = 1706 NongliData(39) = 398762 NongliData(40) = 2741 NongliData(41) = 1206 NongliData(42) = 267438 NongliData(43) = 2647 NongliData(44) = 1318 NongliData(45) = 204070 NongliData(46) = 3477 NongliData(47) = 461653 NongliData(48) = 1386 NongliData(49) = 2413 NongliData(50) = 330077 NongliData(51) = 1197 NongliData(52) = 2637 NongliData(53) = 268877 NongliData(54) = 3365 NongliData(55) = 531109 NongliData(56) = 2900 NongliData(57) = 2922 NongliData(58) = 398042 NongliData(59) = 2395 NongliData(60) = 1179 NongliData(61) = 267415 NongliData(62) = 2635 NongliData(63) = 661067 NongliData(64) = 1701 NongliData(65) = 1748 NongliData(66) = 398772 NongliData(67) = 2742 NongliData(68) = 2391 NongliData(69) = 330031 NongliData(70) = 1175 NongliData(71) = 1611 NongliData(72) = 200010 NongliData(73) = 3749 NongliData(74) = 527717 NongliData(75) = 1452 NongliData(76) = 2742 NongliData(77) = 332397 NongliData(78) = 2350 NongliData(79) = 3222 NongliData(80) = 268949 NongliData(81) = 3402 NongliData(82) = 3493 NongliData(83) = 133973 NongliData(84) = 1386 NongliData(85) = 464219 NongliData(86) = 605 NongliData(87) = 2349 NongliData(88) = 334123 NongliData(89) = 2709 NongliData(90) = 2890 NongliData(91) = 267946 NongliData(92) = 2773 NongliData(93) = 592565 NongliData(94) = 1210 NongliData(95) = 2651 NongliData(96) = 395863 NongliData(97) = 1323 NongliData(98) = 2707 NongliData(99) = 265877 NongliData(100) = 1706 NongliData(101) = 2773 NongliData(102) = 133557 NongliData(103) = 1206 NongliData(104) = 398510 NongliData(105) = 2638 NongliData(106) = 3366 NongliData(107) = 335142 NongliData(108) = 3411 NongliData(109) = 1450 NongliData(110) = 200042 NongliData(111) = 2413 NongliData(112) = 723293 NongliData(113) = 1197 NongliData(114) = 2637 NongliData(115) = 399947 NongliData(116) = 3365 NongliData(117) = 3410 NongliData(118) = 334676 NongliData(119) = 2906 ' 生成當(dāng)前公歷年、月、日 curYear = Year(curTime) curMonth = Month(curTime) curDay = Day(curTime) ' 計算到初始時間1921年2月8日的天數(shù): 1921-2-8(正月初一) TheDate = (curYear - 1921) * 365 + Int((curYear - 1921) / 4) + curDay + MonthAdd(curMonth - 1) - 38 If ((curYear Mod 4) = 0 And curMonth > 2) Then TheDate = TheDate + 1 End If ' 計算農(nóng)歷天干、地支、月、日 isEnd = 0 m = 0 isLeapMonth = False Do If (NongliData(m) < 4095) Then k = 11 Else k = 12 End If n = k Do If (n < 0) Then Exit Do End If ' 獲取NongliData(m)的第n個二進(jìn)制位的值 bit = NongliData(m) For i = 1 To n Step 1 bit = Int(bit / 2) Next bit = bit Mod 2 If (TheDate <= 29 + bit) Then isEnd = 1 Exit Do End If TheDate = TheDate - 29 - bit n = n - 1 Loop If (isEnd = 1) Then Exit Do End If m = m + 1 Loop curYear = 1921 + m curMonth = k - n + 1 curDay = TheDate ' 判斷是否為閏月 If (k = 12) Then Dim leapMonth As Integer leapMonth = Int(NongliData(m) / 65536) + 1 If (curMonth = leapMonth) Then isLeapMonth = True curMonth = 1 - curMonth ElseIf (curMonth > leapMonth) Then curMonth = curMonth - 1 End If End If curMonth = Abs(curMonth) ' 返回農(nóng)歷日期 (格式: "[閏]YYYY/M/D") If isLeapMonth Then NongLi = "閏 " & curYear & "/" & curMonth & "/" & curDay Else NongLi = curYear & "/" & curMonth & "/" & curDay End If End Function
二、使用代碼
首先打開Excel,按下快捷鍵ALT+F11調(diào)出VB窗口,之后點(diǎn)擊【插入】找到【模塊】新建一個模塊,在右側(cè)的空白區(qū)域,按下【Ctrl+V】直接粘貼即可
三、展示結(jié)果
使用方法就跟常規(guī)的函數(shù)是一樣的輸入函數(shù)的名稱【NongLi】,然后點(diǎn)擊對應(yīng)的單元格,想向下填充即可,可以準(zhǔn)確的識別是6月的閏月的
相關(guān)文章
- 之前都是用思維導(dǎo)圖軟件做的員工手冊,現(xiàn)在想要提升工作效率,用DeepSeek制作,該如何操作呢?詳細(xì)請看下文介紹2025-07-15
利用AI工具提高B站學(xué)習(xí)效率! DeepSeek一鍵生成B站視頻筆記詳解
在B站學(xué)習(xí)視頻課程時,我們常常會遇到視頻節(jié)奏緩慢或內(nèi)容冗長的問題,導(dǎo)致注意力難以集中,我們可以利用ai解決這個問題,做好內(nèi)容筆記,詳細(xì)如下文所述2025-06-25還能在Excel中直接編輯! DeepSeek配合Mermaid生成圖表的技巧
今天跟大家分享下我們?nèi)绾问褂肈eepSeek與Mermaid來實(shí)現(xiàn)快速的生成圖表,操作也非常的簡單,只需要準(zhǔn)備好自己的數(shù)據(jù)源即可,還可以在excel中修改哦2025-06-24deepseek各版本有什么區(qū)別? DeepSeek各版本說明與優(yōu)缺點(diǎn)分析
本文將詳細(xì)介紹DeepSeek的各版本,從版本的發(fā)布時間、特點(diǎn)、優(yōu)勢以及不足之處,為廣大AI技術(shù)愛好者和開發(fā)者提供一份參考指南2025-06-20完美彌補(bǔ)Excel可視化短板! 用DeepSeek制作熱力地圖的技巧
在之前,我們用Excel制作填充熱力地圖,通常需要先找到對應(yīng)的地圖、然后按省/市/區(qū)分成單個的小塊,特別麻煩,如果用DeepSeek制作熱力地圖就很方便,詳細(xì)請看下文介紹2025-06-18合同管理利器! DeepSeek寫VBA實(shí)現(xiàn)Excel打開就彈窗到期預(yù)警
公司合同管理是一件很復(fù)雜的事情,比如合同到期提醒,我們就可以使用DeepSeek寫VBA代碼實(shí)現(xiàn)快捷提醒,詳細(xì)請看下文介紹2025-06-10批量修改圖片大小! DeepSeek搭配Word文檔才是絕配
最近我發(fā)現(xiàn)DeepSeek與Word才是絕配,通過VBA代碼可以批量修改圖片大小,下面我們就來看看詳細(xì)操作步驟,內(nèi)附代碼2025-06-02效果太離譜! DeepSeek自動生成動態(tài)可視化圖表的技巧
只需10秒,輸入指令詞后,一張張會動的圖表就出來嘍~60+種圖表,組合圖、散點(diǎn)圖和氣泡圖、面積圖、柱狀圖和條形圖、餅圖、折線圖七大類圖表,想要哪種就都可以!2025-05-23用Deepseek統(tǒng)計考勤表 只需3分鐘就夠了!
Deepseek太強(qiáng)了!之前3天都統(tǒng)計不完的考勤表,現(xiàn)在3分鐘就夠了!很多朋友不知道怎么操作,,詳細(xì)請看下文介紹2025-05-20- 不知道大家平時在工作當(dāng)中繪制各種圖表的情況多不多,比如流程圖,時序圖,餅圖等等, 如果是自己平時使用還好,畫個大概能看就行,如果是給領(lǐng)導(dǎo)匯報就需要特別用心,怎么2025-05-20