ecel裡面的公曆轉農曆,EXCEL裡面的公曆轉農曆

2022-03-04 09:32:22 字數 6569 閱讀 6027

1樓:du知道君

dim weekname(7), monthadd(11), nonglidata(99), tiangan(9), dizhi(11), shuxiang(11), dayname(30), monname(12) dim curtime, curyear, curmonth, curday, curweekday dim gonglistr, weekdaystr, nonglistr, nonglidaystr dim i, m, n, k, isend, bit, thedate private sub form_load() '獲取當前系統時間 curtime = now() '星期

名 weekname(0) = " * " weekname(1) = "星期日" weekname(2) = "星期一" weekname(3) = "星期二" weekname(4) = "星期三" weekname(5) = "星期四" weekname(6) = "星期五" weekname(7) = "星期六" '天干名稱 tiangan(0) = "甲" tiangan(1) = "乙" tiangan(2) = "丙" tiangan(3) = "丁" tiangan(4) = "戊" tiangan(5) = "己" tiangan(6) = "庚" tiangan(7) = "辛" tiangan(8) = "壬" tiangan(9) = "癸" '地支名稱 dizhi(0) = "子" dizhi(1) = "醜" dizhi(2) = "寅" dizhi(3) = "卯" dizhi(4) = "辰" dizhi(5) = "巳" dizhi(6) = "午" dizhi(7) = "未" dizhi(8) = "申" dizhi(9) = "酉" dizhi(10) = "戌" dizhi(11) = "亥" '屬相名稱 shuxiang(0) = "鼠" shuxiang(1) = "牛" shuxiang(2) = "虎" shuxiang(3) = "兔" shuxiang(4) = "龍" shuxiang(5) = "蛇" shuxiang(6) = "馬" shuxiang(7) = "羊" shuxiang(8) = "猴" shuxiang(9) = "雞" shuxiang(10) = "狗" shuxiang(11) = "豬" '農曆日期名 dayname(0) = "*" dayname(1) = "初一" dayname(2) = "初二" dayname(3) = "初三" dayname(4) = "初四" dayname(5) = "初五" dayname(6) = "初六" dayname(7) = "初七" dayname(8) = "初八" dayname(9) = "初九" dayname(10) = "初十" dayname(11) = "十?quot;" dayname(12) = "十二" dayname(13) = "十三" dayname(14) = "十四" dayname(15) = "十五" dayname(16) = "十六" dayname(17) = "十七" dayname(18) = "十八" dayname(19) = "十九" dayname(20) = "二十" dayname(21) = "廿一" dayname(22) = "廿二" dayname(23) = "廿三" dayname(24) = "廿四" dayname(25) = "廿五" dayname(26) = "廿六" dayname(27) = "廿七" dayname(28) = "廿八" dayname(29) = "廿九" dayname(30) = "三十" '農曆月份名 monname(0) = "*" monname(1) = "正" monname(2) = "二" monname(3) = "三" monname(4) = "四" monname(5) = "五" monname(6) = "六" monname(7) = "七" monname(8) = "八" monname(9) = "九" monname(10) = "十" monname(11) = "十一" monname(12) = "臘" '公曆每月前面的天數 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 '農曆資料 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 '生成當前公曆年、月、日 ==> gonglistr curyear = year(curtime) curmonth = month(curtime) curday = day(curtime) gonglistr = curyear & "年" if (curmonth < 10) then gonglistr = gonglistr & "0" & curmonth & "月" else gonglistr = gonglistr & curmonth & "月" end if if (curday < 10) then gonglistr = gonglistr & "0" & curday & "日" else gonglistr = gonglistr & curday & "日" end if '生成當前公曆星期 ==> weekdaystr curweekday = weekday(curtime) weekdaystr = weekname(curweekday) '計算到初始時間2023年2月8日的天數: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 '計算農曆天干、地支、月、日 isend = 0 m = 0 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個二進位制位的值 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 if (curmonth = (int(nonglidata(m) / 65536) + 1)) then curmonth = 1 - curmonth elseif (curmonth > (int(nonglidata(m) / 65536) + 1)) then curmonth = curmonth - 1 end if end if '生成農曆天干、地支、屬相 ==> nonglistr nonglistr = "農曆" & tiangan(((curyear - 4) mod 60) mod 10) & dizhi(((curyear - 4) mod 60) mod 12) & "年" nonglistr = nonglistr & "(" & shuxiang(((curyear - 4) mod 60) mod 12) & ")" '生成農曆月、日 ==> nonglidaystr if (curmonth < 1) then nonglidaystr = "閏" & monname(-1 * curmonth) else nonglidaystr = monname(curmonth) end if nonglidaystr = nonglidaystr & "月" nonglidaystr = nonglidaystr & dayname(curday) msgbox nonglistr & nonglidaystr end sub 參考資料:

如何用excel裡面的vlookup做資料匹配

vlookup是引用類函式,根據查詢的內容,返回同行中,不同列中對應的值。方法步驟如下 1 選中e2單元格 2 輸入公式 vlookup d2,a b,2,0 回車 3 檢視效果 修改姓名測試結果正確 擴充套件資料 vlookup lookup value,table array,col index...

計算機二級office裡面的ecel計算題

sumifs h 3 h 999,year b 3 b 999 2012,e 3 e 999,ms office 高階應用 主要原因是你輸入的表也沒用對應的 名稱 題目是 圖書編號 和 圖書名稱 的對應關係在 編號對照 工作表中。而你的公式用的是 表2 肯定是和答案不符了,不給分是對的 拍個照,或者...

Excel請問雙引號在函式裡面的作用是什麼

酸菜魚的娛樂 excel公式中的雙引號用於文字或資料輸出時使用。1 開啟excel 2 輸入公式 if c3 36,1 0 意思就是如果c3單元格等於36,那就顯示1,如果不是就顯示0。3 回車確定公式後,下拉複製公式,等於36的就顯示1,不等於36的就顯示為0了。 雙引號 引用文字或空值,單引號 ...