Option Base 1
Dim rq As Integer '日期
Dim y As Date '农历正月月初一的阳历日期
Dim yts As Variant '农历每月的天数
Dim yy(2) As Integer '农历闰月数、阳历闰年数(闰年为1,不闰年为0)
Dim nl(3, 385) As String '阳历日期字符串、农历日期字符串、农历闰月字符串
Function NONGLI(glrq As Date, nlr As Integer)
Dim X As Integer, i As Integer, k As Integer, n1 As Integer, n2 As Integer
X = Year(glrq)
If X < 1900 Or glrq > #1/28/2101# Then
NONGLI = "?"
Exit Function
End If
'1、将X年的阴阳历等,通过运行程序2,装入数组
If X < 2021 Then Call Array1(X, n1, glrq)
If X > 2020 Then Call Array2(X, n1, glrq)
'2、查找阳历日期所在数组的序号rq
di2bu: rq = 0
If X = 1899 Then
rq = Day(glrq)
Else
For i = 1 To n1
If nl(1, i) = glrq Then rq = i: Exit For
Next i
End If
'3、填写"农历日期"(包括节日、纪念日)
Dim nongli1$, yr$, yuefen$, yf$, rizi$, rz$
Dim jr1 As String, jr2 As String, jr3 As String
nongli1 = nl(2, rq) '农历日期以"2014-2-1"或"2014-闰9-1"的形式表示
yr = Strings.Right(nongli1, Strings.Len(nongli1) - 5) '农历日期以"2-1"或"闰9-1"形式表示yuefen = Strings.Left(yr, Strings.InStrRev(yr, "-") - 1) '农历的月份以"2"或"闰9"形式表示
rizi = Strings.Right(yr, Strings.Len(yr) - Strings.InStrRev(yr, "-")) '农历的日子以"2"形式表示
Dim yuefenB As Variant, yfB As Variant
yuefenB = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, "闰2", "闰3", "闰4", "闰5", "闰6", "闰7", "闰8", "闰9", "闰10", "闰11", "闰12")
yfB = Array("正月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "冬月", "腊月", "闰二月", "闰三月", "闰四月", "闰五月", "闰六月", "闰七月", "闰八月", "闰九月", "闰十月", "闰冬月", "闰腊月")
For i = 1 To 23 '农历的月份以汉字形式表示
If yuefen = yuefenB(i) Then yf = yfB(i): Exit For
Next i
Dim rzB As Variant
rzB = Array("初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十")
For i = 1 To 30
If rizi = i Then rz = rzB(i): Exit For '农历的日子以汉字形式表示
Next i
'农历节日--jr1
If nlr = 3 Then Call nljr(rizi, yuefen, yuefenB, yfB, yr, yts, jr1)
'24节气--ji2
Dim xiaohan As Date
xiaohan = Int(365.242646137797 * Year(glrq) - 693953.924646684)
If glrq = xiaohan Then jr2 = "小寒"
Dim dahan As Date
dahan = Int(365.242629416257 * Year(glrq) - 693939.16865395)
If Year(glrq) = 2082 Then dahan = dahan + 1
If glrq = dahan Then jr2 = "大寒"
Dim lichun As Date
lichun = Int(365.24259976737 * Year(glrq) - 693924.346732722)
If glrq = lichun Then jr2 = "立春"
Dim yushui As Date
yushui = Int(365.242502247697 * Year(glrq) - 693909.331831532)
If Year(glrq) = 2059 Or Year(glrq) = 2092 Then yushui = yushui + 1
If glrq = yushui Then jr2 = "雨水"
Dim jingzhe As Date
jingzhe = Int(365.242419549484 * Year(glrq) - 693894.233446856)
If Year(glrq) = 2047 Then jingzhe = jingzhe + 1
If glrq = jingzhe Then jr2 = "惊蛰"
Dim chunfen As Date
chunfen = Int(365.242305278251 * Year(glrq) - 693878.966116765)
If Year(glrq) = 2051 Then chunfen = chunfen - 1
If glrq = chunfen Then jr2 = "春分"
Dim qingming As Date
qingming = Int(365.242254377632 * Year(glrq) - 693863.694715595)
If glrq = qingming Then jr2 = "清明"
Dim guyu As Date
guyu = Int(365.242150678344 * Year(glrq) - 693848.193860396)
If Year(glrq) = 2045 Then guyu = guyu - 1
If glrq = guyu Then jr2 = "谷雨"
Dim lixia As Date
lixia = Int(365.242041986455 * Year(glrq) - 693832.541539829)
If Year(glrq) = 1973 Or Year(glrq) = 2035 Then lixia = lixia - 1
If glrq = lixia Then jr2 = "立夏"
Dim xiaoman As Date
xiaoman = Int(365.241895042148 * Year(glrq) - 693816.712806842)
If Year(glrq) = 2070 Then xiaoman = xiaoman - 1
If glrq = xiaoman Then jr2 = "小满"
Dim mangzhong As Date
mangzhong = Int(365.241908822174 * Year(glrq) - 693801.095841903)
If Year(glrq) = 2026 Or Year(glrq) = 2055 Or Year(glrq) = 2088 Then mangzhong = mangzhong - 1
If glrq = mangzhong Then jr2 = "芒种"
Dim xiazhi As Date
xiazhi = Int(365.242316100823 * Year(glrq) - 693786.181888162)
If Year(glrq) = 2019 Or Year(glrq) = 2023 Or Year(glrq) = 2048 Or Year(glrq) = 2052 Or Year(glrq) = 2056 Or Year(glrq) = 2081 Or Year(glrq) = 2085 Or Year(glrq) = 2089 Then xiazhi = xiazhi - 1
If glrq = xiazhi Then jr2 = "夏至"
Dim xiaoshu As Date
xiaoshu = Int(365.241837274251 * Year(glrq) - 693769.530669936)
If Year(glrq) = 2078 Then xiaoshu = xiaoshu - 1
If glrq = xiaoshu Then jr2 = "小暑"
Dim dashu As Date
dashu = Int(365.241703595146 * Year(glrq) - 693753.549346385)
If glrq = dashu Then jr2 = "大暑"
Dim liqiu As Date
liqiu = Int(365.241890113665 * Year(glrq) - 693738.222492901)
If Year(glrq) = 2035 Or Year(glrq) = 2068 Or Year(glrq) = 2097 Then liqiu = liqiu - 1
If glrq = liqiu Then jr2 = "立秋"
Dim chushu As Date
chushu = Int(365.242316100823 * Year(glrq) - 693723.45493336)
If Year(glrq) = 2020 Or Year(glrq) = 2049 Or Year(glrq) = 2053 Then chushu = chushu - 1 If glrq = chushu Then jr2 = "处暑"
Dim bailu As Date
bailu = Int(365.242316100823 * Year(glrq) - 693707.939588367)
If glrq = bailu Then jr2 = "白露"
Dim qiufen As Date
qiufen = Int(365.242085926645 * Year(glrq) - 693692.119710911)
If glrq = qiufen Then jr2 = "秋分"
Dim hanlu As Date
hanlu = Int(365.242316100823 * Year(glrq) - 693677.304821888)
If Year(glrq) = 2073 Then hanlu = hanlu - 1
If glrq = hanlu Then jr2 = "寒露"
Dim shuangjiang As Date
shuangjiang = Int(365.242316100823 * Year(glrq) - 693662.177281271)
If glrq = shuangjiang Then jr2 = "霜降"
Dim lidong As Date
lidong = Int(365.242316100823 * Year(glrq) - 693647.185448183)
If glrq = lidong Then jr2 = "立冬"
Dim xiaoxue As Date
xiaoxue = Int(365.242316100823 * Year(glrq) - 693632.293388525)
If Year(glrq) = 1912 Then xiaoxue = xiaoxue - 1
If glrq = xiaoxue Then jr2 = "小雪"
Dim daxue As Date
daxue = Int(365.242199074074 * Year(glrq) - 693617.264427083)
If Year(glrq) = 2020 Or Year(glrq) = 2053 Or Year(glrq) = 2082 Then daxue = daxue + 1
If glrq = daxue Then jr2 = "大雪"
Dim dongzhi As Date
dongzhi = Int(365.242615913523 * Year(glrq) - 693603.343641496)
If Year(glrq) = 2054 Or Year(glrq) = 2087 Then dongzhi = dongzhi + 1
If glrq = dongzhi Then jr2 = "冬至一九第一天"
For i = 10 To 73 Step 9
If Month(glrq) <> 12 Then dongzhi = Int(365.242615913523 * (Year(glrq) - 1) - 693603.343641496): If Year(glrq) - 1 = 2054 Or Year(glrq) - 1 = 2087 Then dongzhi = dongzhi + 1
If i = glrq - dongzhi + 1 Then
If i = 10 Then jr2 = jr2 & "二九第一天": Exit For
If i = 19 Then jr2 = jr2 & "三九第一天": Exit For
If i = 28 Then jr2 = jr2 & "四九第一天": Exit For
If i = 37 Then jr2 = jr2 & "五九第一天": Exit For
If i = 46 Then jr2 = jr2 & "六九第一天": Exit For
If i = 55 Then jr2 = jr2 & "七九第一天": Exit For
If i = 64 Then jr2 = jr2 & "八九第一天": Exit For
If i = 73 Then jr2 = jr2 & "九九第一天": Exit For
End If
Next i
'公历节日--jr3
If nlr = 3 Then Call gljr(glrq, jr3)
'4、日期的天干地支
di4bu: If nlr <> 5 Then GoTo di5bu
Dim ganzhiB As Variant
ganzhiB = Array("甲子", "乙丑", "丙寅", "丁卯", "戊辰", "己巳", "庚午", "辛未", "壬申", "癸酉", "甲戌", "乙亥", "丙子", "丁丑", "戊寅", "己卯", "庚辰", "辛巳", "壬午", "癸未", "甲申", "乙
酉", "丙戌", "丁亥", "戊子", "己丑", "庚寅", "辛卯", "壬辰", "癸巳", "甲午", "乙未", "丙申", "丁酉", "戊戌", "己亥", "庚子", "辛丑", "壬寅", "癸卯", "甲辰", "乙巳", "丙午", "丁未", "戊申", "己酉", "庚戌", "辛亥", "壬子", "癸丑", "甲寅", "乙卯", "丙辰", "丁巳", "戊午", "己未", "庚申", "辛酉", "壬戌", "癸亥")
'(1)把农历年份的天干地支赋值于ngz,农历1984年是:甲子年
Dim ns%, ngz$
If X = Year(glrq) And glrq < lichun Then '春节后立春时,小于立春的日子为上一年:X-1
ns = X - 1 - 1983
ElseIf X = Year(glrq) - 1 And glrq >= lichun Then ns = X + 1 - 1983 '春节前立春时,大于等于立春的日子为下一年:X+1
Else
ns = X - 1983 '其他日子为当年:X
End If
ns = ns Mod 60
If ns <= 0 Then ns = ns + 60 '年干支数
ngz = ganzhiB(ns) '年干支
'(2)把农历月份的天干地支赋值于ygz
Dim yfs%, ntgs%, ytgs%, ydzs%, ygzs%, ygz$
If glrq < xiaohan Then '农历月份数'小寒
yfs = 11
ElseIf glrq < lichun Then yfs = 12 '立春
ElseIf glrq < jingzhe Then yfs = 1 '惊蛰
ElseIf glrq < qingming Then yfs = 2 '清明
ElseIf glrq < lixia Then yfs = 3 '立夏
ElseIf glrq < mangzhong Then yfs = 4 '芒种
ElseIf glrq < xiaoshu Then yfs = 5 '小暑
ElseIf glrq < liqiu Then yfs = 6 '立秋
ElseIf glrq < bailu Then yfs = 7 '白露
ElseIf glrq < hanlu Then yfs = 8 '寒露
ElseIf glrq < lidong Then yfs = 9 '立冬
ElseIf glrq < daxue Then yfs = 10 '大雪
Else
yfs = 11
End If
ntgs = ns Mod 5: If ntgs = 0 Then ntgs = 5 '年天干数(1—5)
ytgs = (ntgs * 2 + yfs) Mod 10: If ytgs = 0 Then ytgs = 10 '月天干数(口诀:年上起月不麻烦,月干周期为五年。从一到五数年干,数到当年就算完;此数两倍加月份,个位之数月干选。)
ydzs = yfs + 2: If ydzs > 12 Then ydzs = ydzs - 12 '月地支数(口诀:月份之数加上二,超出十二减十二。)
ygzs = ((ytgs - ydzs + 12) Mod 12) * 5 + ytgs '月干支数(口诀:天干减地支,不够借十二;其差乘以五,再加天干补。)
ygz = ganzhiB(ygzs) '月干支
'(3)把农历日的天干地支赋值于rgz ,1984-1-31是:甲子日
Dim rs%, rgz$
rs = glrq - #1/30/1984#: rs = rs Mod 60: If rs <= 0 Then rs = rs + 60 '日干支数
rgz = ganzhiB(rs) '日干支
'5、定义农历函数--NONGLI
di5bu: Select Case nlr ' 判断nlr 的值。
Case 1
NONGLI = nongli1 'nlr=1时,函数NONGLI为"yyyy-mm-dd"的形式
Case 2
NONGLI = yr 'nlr=1时,函数NONGLI为"mm-dd"的形式
Case 3
If jr1 & jr2 & jr3 <> "" Then NONGLI = jr1 & jr2 & jr3 Else NONGLI = rz 'nlr=3时,函数NONGLI是节日时为"××"节日形式,否则为"初十"的形式
Case 4
NONGLI = rz 'nlr=4时,函数NONGLI为"初十"的形式
Case 5
NONGLI = ngz & " " & ygz & " " & rgz 'nlr=时,函数NONGLI为"甲子丙寅丙寅"的形式Case Else
NONGLI = yf & rz 'nlr≠1~5的整数时,函数NONGLI的形式,同nlr=1时
End Select
Exit Function
'zichengxu2:
End Function
Sub Array1(X As Integer, n1 As Integer, glrq As Date)
''******************** 装数组程序:(1900--2020),返回农历年份--a(即原X)和此年总天数--b *****************''
zichengxu2:
1899: If X = 1899 Then y = #1/1/1899#: yts = Array(30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0): GoTo zuihou
1900: If X = 1900 Then y = #1/31/1900#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 29, 30, 8): GoTo zuihou
If X > 2020 Then Exit Sub Else If X >= 2000 Then GoTo 2000 Else If X >= 1980 Then GoTo 1980 Else If X >= 1960 Then GoTo 1960 Else If X >= 1940 Then GoTo 1940
1901: If X = 1901 Then y = #2/19/1901#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 29, 0, 0): GoTo zuihou
1902: If X = 1902 Then y = #2/8/1902#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 0, 0): GoTo zuihou
1903: If X = 1903 Then y = #1/29/1903#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 5): GoTo zuihou
1904: If X = 1904 Then y = #2/16/1904#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 0, 0): GoTo zuihou
1905: If X = 1905 Then y = #2/4/1905#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 30, 29, 29, 30, 29, 30, 29, 30, 0, 0): GoTo zuihou
1906: If X = 1906 Then y = #1/25/1906#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 4): GoTo zuihou
1907: If X = 1907 Then y = #2/13/1907#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 0, 0): GoTo zuihou
1908: If X = 1908 Then y = #2/2/1908#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 29, 30, 30, 29, 30, 29, 30, 30, 29, 30, 0, 0): GoTo zuihou
1909: If X = 1909 Then y = #1/22/1909#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 29, 30, 2): GoTo zuihou
1910: If X = 1910 Then y = #2/10/1910#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 29, 0, 0): GoTo zuihou
1911: If X = 1911 Then y = #1/30/1911#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 6): GoTo zuihou
1912: If X = 1912 Then y = #2/18/1912#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 0, 0): GoTo zuihou
1913: If X = 1913 Then y = #2/6/1913#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 0, 0): GoTo zuihou
Array(30, 30, 29, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 5): GoTo zuihou
1915: If X = 1915 Then y = #2/14/1915#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 29, 0, 0): GoTo zuihou
1916: If X = 1916 Then y = #2/3/1916#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 0, 0): GoTo zuihou
1917: If X = 1917 Then y = #1/23/1917#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 29, 30, 29, 2): GoTo zuihou
1918: If X = 1918 Then y = #2/11/1918#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 0, 0): GoTo zuihou
1919: If X = 1919 Then y = #2/1/1919#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 30, 7): GoTo zuihou
1920: If X = 1920 Then y = #2/20/1920#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 0, 0): GoTo zuihou
1921: If X = 1921 Then y = #2/8/1921#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 0, 0): GoTo zuihou
1922: If X = 1922 Then y = #1/28/1922#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 5): GoTo zuihou
1923: If X = 1923 Then y = #2/16/1923#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 0, 0): GoTo zuihou
1924: If X = 1924 Then y = #2/5/1924#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 29, 30, 30, 29, 30, 29, 30, 29, 29, 0, 0): GoTo zuihou
1925: If X = 1925 Then y = #1/24/1925#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 30, 29, 30, 4): GoTo zuihou
1926: If X = 1926 Then y = #2/13/1926#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 0, 0): GoTo zuihou
1927: If X = 1927 Then y = #2/2/1927#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 29, 30, 29, 30, 29, 30, 29, 30, 30, 30, 0, 0): GoTo zuihou
1928: If X = 1928 Then y = #1/23/1928#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 30, 2): GoTo zuihou
1929: If X = 1929 Then y = #2/10/1929#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 0, 0): GoTo zuihou
1930: If X = 1930 Then y = #1/30/1930#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 29, 6): GoTo zuihou
1931: If X = 1931 Then y = #2/17/1931#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 0, 0): GoTo zuihou
1932: If X = 1932 Then y = #2/6/1932#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 0, 0): GoTo zuihou
1933: If X = 1933 Then y = #1/26/1933#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 29, 30, 30, 29, 30, 29, 30, 29, 29, 30, 5): GoTo zuihou
1934: If X = 1934 Then y = #2/14/1934#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 30, 29, 30, 29, 30, 30, 29, 30, 0, 0): GoTo zuihou
1935: If X = 1935 Then y = #2/4/1935#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 0, 0): GoTo zuihou
Array(30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 30, 29, 3): GoTo zuihou
1937: If X = 1937 Then y = #2/11/1937#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 29, 0, 0): GoTo zuihou
1938: If X = 1938 Then y = #1/31/1938#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 7): GoTo zuihou
1939: If X = 1939 Then y = #2/19/1939#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 29, 30, 0, 0): GoTo zuihou
1940: If X = 1940 Then y = #2/8/1940#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 0, 0): GoTo zuihou
1941: If X = 1941 Then y = #1/27/1941#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 30, 29, 30, 29, 29, 30, 29, 30, 29, 6): GoTo zuihou
1942: If X = 1942 Then y = #2/15/1942#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 0, 0): GoTo zuihou
1943: If X = 1943 Then y = #2/5/1943#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 0, 0): GoTo zuihou
1944: If X = 1944 Then y = #1/25/1944#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 4): GoTo zuihou
1945: If X = 1945 Then y = #2/13/1945#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 29, 30, 0, 0): GoTo zuihou
1946: If X = 1946 Then y = #2/2/1946#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 0, 0): GoTo zuihou
1947: If X = 1947 Then y = #1/22/1947#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 2): GoTo zuihou
1948: If X = 1948 Then y = #2/10/1948#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 0, 0): GoTo zuihou
1949: If X = 1949 Then y = #1/29/1949#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 7): GoTo zuihou
1950: If X = 1950 Then y = #2/17/1950#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 29, 30, 30, 29, 29, 30, 29, 30, 29, 0, 0): GoTo zuihou
1951: If X = 1951 Then y = #2/6/1951#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 0, 0): GoTo zuihou
1952: If X = 1952 Then y = #1/27/1952#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 5): GoTo zuihou
1953: If X = 1953 Then y = #2/14/1953#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 30, 29, 30, 30, 29, 30, 29, 0, 0): GoTo zuihou
1954: If X = 1954 Then y = #2/3/1954#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 0, 0): GoTo zuihou
1955: If X = 1955 Then y = #1/24/1955#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 3): GoTo zuihou
1956: If X = 1956 Then y = #2/12/1956#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 0, 0): GoTo zuihou
1957: If X = 1957 Then y = #1/31/1957#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 29, 8): GoTo zuihou
Array(30, 30, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 0, 0): GoTo zuihou
1959: If X = 1959 Then y = #2/8/1959#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 0, 0): GoTo zuihou
1960: If X = 1960 Then y = #1/28/1960#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 6): GoTo zuihou
1961: If X = 1961 Then y = #2/15/1961#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 0, 0): GoTo zuihou
1962: If X = 1962 Then y = #2/5/1962#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 29, 0, 0): GoTo zuihou
1963: If X = 1963 Then y = #1/25/1963#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 29, 4): GoTo zuihou
1964: If X = 1964 Then y = #2/13/1964#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 0, 0): GoTo zuihou
1965: If X = 1965 Then y = #2/2/1965#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 0, 0): GoTo zuihou
1966: If X = 1966 Then y = #1/21/1966#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 3): GoTo zuihou
1967: If X = 1967 Then y = #2/9/1967#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 30, 29, 29, 30, 29, 30, 29, 30, 0, 0): GoTo zuihou
1968: If X = 1968 Then y = #1/30/1968#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 7): GoTo zuihou
1969: If X = 1969 Then y = #2/17/1969#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 0, 0): GoTo zuihou
1970: If X = 1970 Then y = #2/6/1970#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 29, 30, 0, 0): GoTo zuihou
1971: If X = 1971 Then y = #1/27/1971#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 29, 30, 5): GoTo zuihou
1972: If X = 1972 Then y = #2/15/1972#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 29, 30, 0, 0): GoTo zuihou
1973: If X = 1973 Then y = #2/3/1973#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 0, 0): GoTo zuihou
1974: If X = 1974 Then y = #1/23/1974#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 4): GoTo zuihou
1975: If X = 1975 Then y = #2/11/1975#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 0, 0): GoTo zuihou
1976: If X = 1976 Then y = #1/31/1976#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 8): GoTo zuihou
1977: If X = 1977 Then y = #2/18/1977#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 29, 0, 0): GoTo zuihou
1978: If X = 1978 Then y = #2/7/1978#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 30, 29, 30, 30, 29, 30, 29, 30, 29, 0, 0): GoTo zuihou
1979: If X = 1979 Then y = #1/28/1979#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 29, 30, 29, 6): GoTo zuihou
Array(30, 29, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 0, 0): GoTo zuihou
1981: If X = 1981 Then y = #2/5/1981#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 0, 0): GoTo zuihou
1982: If X = 1982 Then y = #1/25/1982#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 4): GoTo zuihou
1983: If X = 1983 Then y = #2/13/1983#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 0, 0): GoTo zuihou
1984: If X = 1984 Then y = #2/2/1984#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 10): GoTo zuihou
1985: If X = 1985 Then y = #2/20/1985#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 0, 0): GoTo zuihou
1986: If X = 1986 Then y = #2/9/1986#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 29, 30, 30, 29, 30, 29, 30, 29, 29, 0, 0): GoTo zuihou
1987: If X = 1987 Then y = #1/29/1987#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 30, 29, 29, 6): GoTo zuihou
1988: If X = 1988 Then y = #2/17/1988#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 0, 0): GoTo zuihou
1989: If X = 1989 Then y = #2/6/1989#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 29, 30, 29, 30, 29, 30, 29, 30, 30, 30, 0, 0): GoTo zuihou
1990: If X = 1990 Then y = #1/27/1990#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 30, 5): GoTo zuihou
1991: If X = 1991 Then y = #2/15/1991#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 0, 0): GoTo zuihou
1992: If X = 1992 Then y = #2/4/1992#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 0, 0): GoTo zuihou
1993: If X = 1993 Then y = #1/23/1993#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 3): GoTo zuihou
1994: If X = 1994 Then y = #2/10/1994#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 0, 0): GoTo zuihou
1995: If X = 1995 Then y = #1/31/1995#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 29, 30, 29, 30, 30, 29, 29, 30, 29, 30, 8): GoTo zuihou
1996: If X = 1996 Then y = #2/19/1996#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 30, 29, 30, 29, 30, 30, 29, 29, 0, 0): GoTo zuihou
1997: If X = 1997 Then y = #2/7/1997#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 0, 0): GoTo zuihou
1998: If X = 1998 Then y = #1/28/1998#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 29, 30, 5): GoTo zuihou
1999: If X = 1999 Then y = #2/16/1999#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 29, 0, 0): GoTo zuihou
2000: If X = 2000 Then y = #2/5/2000#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 29, 0, 0): GoTo zuihou
2001: If X = 2001 Then y = #1/24/2001#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 4): GoTo zuihou
Array(30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 0, 0): GoTo zuihou
2003: If X = 2003 Then y = #2/1/2003#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 30, 29, 30, 29, 29, 30, 29, 30, 0, 0): GoTo zuihou
2004: If X = 2004 Then y = #1/22/2004#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 2): GoTo zuihou
2005: If X = 2005 Then y = #2/9/2005#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 0, 0): GoTo zuihou
2006: If X = 2006 Then y = #1/29/2006#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 7): GoTo zuihou
2007: If X = 2007 Then y = #2/18/2007#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 29, 30, 0, 0): GoTo zuihou
2008: If X = 2008 Then y = #2/7/2008#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 0, 0): GoTo zuihou
2009: If X = 2009 Then y = #1/26/2009#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 5): GoTo zuihou
2010: If X = 2010 Then y = #2/14/2010#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 0, 0): GoTo zuihou
2011: If X = 2011 Then y = #2/3/2011#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 30, 29, 30, 29, 29, 30, 29, 30, 29, 0, 0): GoTo zuihou
2012: If X = 2012 Then y = #1/23/2012#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 4): GoTo zuihou
2013: If X = 2013 Then y = #2/10/2013#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 0, 0): GoTo zuihou
2014: If X = 2014 Then y = #1/31/2014#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 9): GoTo zuihou
2015: If X = 2015 Then y = #2/19/2015#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 30, 30, 30, 29, 30, 29, 0, 0): GoTo zuihou
2016: If X = 2016 Then y = #2/8/2016#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 0, 0): GoTo zuihou
2017: If X = 2017 Then y = #1/28/2017#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 6): GoTo zuihou
2018: If X = 2018 Then y = #2/16/2018#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 0, 0): GoTo zuihou
2019: If X = 2019 Then y = #2/5/2019#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 0, 0): GoTo zuihou
2020: If X = 2020 Then y = #1/25/2020#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 4): GoTo zuihou
zuihou: n1 = 0: n2 = 0
For i = 1 To 13: n1 = n1 + yts(i): Next i
For i = 1 To n1: nl(1, i) = CStr(y + i - 1): Next i
For k = 1 To 13
If X = 1899 Then nlm = "12": GoTo 100
If yts(14) <> 0 Then
If k - yts(14) < 1 Then nlm = CStr(k)
If k - yts(14) = 1 Then nlm = CStr("闰" & k - 1)
If k - yts(14) > 1 Then nlm = CStr(k - 1)
Else
nlm = CStr(k)
End If
100: For i = n2 + 1 To n2 + yts(k)
nl(2, i) = CStr(X) & "-" & nlm & "-" & CStr(i - n2) '农历日期以"2014-2-1"或"1900-闰8-1"的形式表示
Next i
n2 = n2 + yts(k)
Next k
End Sub
Sub Array2(X As Integer, n1 As Integer, glrq As Date)
''******************** 装数组程序2:(2021--2100),返回农历年份--a(即原X)和此年总天数--b *****************''
zichengxu2:
If X > 2101 Then Exit Sub Else If X >= 2080 Then GoTo 2080 Else If X >= 2060 Then GoTo 2060 Else If X >= 2040 Then GoTo 2040
2020: If X = 2020 Then y = #1/25/2020#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 4): GoTo zuihou
2021: If X = 2021 Then y = #2/12/2021#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 0, 0): GoTo zuihou
2022: If X = 2022 Then y = #2/1/2022#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 0, 0): GoTo zuihou
2023: If X = 2023 Then y = #1/22/2023#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 30, 29, 30, 30, 29, 30, 29, 30, 2): GoTo zuihou
2024: If X = 2024 Then y = #2/10/2024#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 29, 0, 0): GoTo zuihou
2025: If X = 2025 Then y = #1/29/2025#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 29, 6): GoTo zuihou
2026: If X = 2026 Then y = #2/17/2026#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 30, 29, 0, 0): GoTo zuihou
2027: If X = 2027 Then y = #2/6/2027#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 0, 0): GoTo zuihou
2028: If X = 2028 Then y = #1/26/2028#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 5): GoTo zuihou
Array(30, 30, 29, 30, 29, 30, 29, 30, 29, 29, 30, 30, 0, 0): GoTo zuihou
2030: If X = 2030 Then y = #2/2/2030#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 0, 0): GoTo zuihou
2031: If X = 2031 Then y = #1/23/2031#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 3): GoTo zuihou
2032: If X = 2032 Then y = #2/11/2032#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 29, 30, 0, 0): GoTo zuihou
2033: If X = 2033 Then y = #1/31/2033#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 29, 30, 11): GoTo zuihou
2034: If X = 2034 Then y = #2/19/2034#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 29, 30, 0, 0): GoTo zuihou
2035: If X = 2035 Then y = #2/8/2035#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 0, 0): GoTo zuihou
2036: If X = 2036 Then y = #1/28/2036#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 6): GoTo zuihou
2037: If X = 2037 Then y = #2/15/2037#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 0, 0): GoTo zuihou
2038: If X = 2038 Then y = #2/4/2038#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 29, 30, 29, 30, 29, 29, 30, 29, 0, 0): GoTo zuihou
2039: If X = 2039 Then y = #1/24/2039#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 29, 5): GoTo zuihou
2040: If X = 2040 Then y = #2/12/2040#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 30, 29, 30, 29, 30, 30, 29, 30, 29, 0, 0): GoTo zuihou
2041: If X = 2041 Then y = #2/1/2041#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 30, 0, 0): GoTo zuihou
2042: If X = 2042 Then y = #1/22/2042#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 2): GoTo zuihou
2043: If X = 2043 Then y = #2/10/2043#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 0, 0): GoTo zuihou
2044: If X = 2044 Then y = #1/30/2044#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 7): GoTo zuihou
2045: If X = 2045 Then y = #2/17/2045#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 0, 0): GoTo zuihou
2046: If X = 2046 Then y = #2/6/2046#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 0, 0): GoTo zuihou
2047: If X = 2047 Then y = #1/26/2047#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 5): GoTo zuihou
2048: If X = 2048 Then y = #2/14/2048#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 29, 30, 30, 29, 30, 29, 29, 30, 29, 0, 0): GoTo zuihou
2049: If X = 2049 Then y = #2/2/2049#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 30, 29, 0, 0): GoTo zuihou
2050: If X = 2050 Then y = #1/23/2050#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 3): GoTo zuihou
Array(30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 30, 0, 0): GoTo zuihou
2052: If X = 2052 Then y = #2/1/2052#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 30, 8): GoTo zuihou
2053: If X = 2053 Then y = #2/19/2053#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 0, 0): GoTo zuihou
2054: If X = 2054 Then y = #2/8/2054#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 0, 0): GoTo zuihou
2055: If X = 2055 Then y = #1/28/2055#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 6): GoTo zuihou
2056: If X = 2056 Then y = #2/15/2056#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 0, 0): GoTo zuihou
2057: If X = 2057 Then y = #2/4/2057#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 0, 0): GoTo zuihou
2058: If X = 2058 Then y = #1/24/2058#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 29, 4): GoTo zuihou
2059: If X = 2059 Then y = #2/12/2059#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 29, 30, 29, 30, 30, 30, 29, 0, 0): GoTo zuihou
2060: If X = 2060 Then y = #2/2/2060#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 29, 0, 0): GoTo zuihou
2061: If X = 2061 Then y = #1/21/2061#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 29, 3): GoTo zuihou
2062: If X = 2062 Then y = #2/9/2062#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 29, 0, 0): GoTo zuihou
2063: If X = 2063 Then y = #1/29/2063#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 7): GoTo zuihou
2064: If X = 2064 Then y = #2/17/2064#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 0, 0): GoTo zuihou
2065: If X = 2065 Then y = #2/5/2065#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 30, 29, 30, 29, 29, 30, 29, 30, 0, 0): GoTo zuihou
2066: If X = 2066 Then y = #1/26/2066#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 5): GoTo zuihou
2067: If X = 2067 Then y = #2/14/2067#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 0, 0): GoTo zuihou
2068: If X = 2068 Then y = #2/3/2068#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 30, 30, 29, 30, 30, 29, 30, 0, 0): GoTo zuihou
2069: If X = 2069 Then y = #1/23/2069#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 29, 29, 30, 29, 30, 30, 30, 29, 30, 4): GoTo zuihou
2070: If X = 2070 Then y = #2/11/2070#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 0, 0): GoTo zuihou
2071: If X = 2071 Then y = #1/31/2071#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 8): GoTo zuihou
2072: If X = 2072 Then y = #2/19/2072#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 0, 0): GoTo zuihou
Array(30, 29, 30, 30, 29, 30, 29, 29, 30, 29, 30, 29, 0, 0): GoTo zuihou
2074: If X = 2074 Then y = #1/27/2074#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 6): GoTo zuihou
2075: If X = 2075 Then y = #2/15/2075#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 0, 0): GoTo zuihou
2076: If X = 2076 Then y = #2/5/2076#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 0, 0): GoTo zuihou
2077: If X = 2077 Then y = #1/24/2077#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 30, 29, 30, 30, 30, 29, 30, 29, 4): GoTo zuihou
2078: If X = 2078 Then y = #2/12/2078#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 0, 0): GoTo zuihou
2079: If X = 2079 Then y = #2/2/2079#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 0, 0): GoTo zuihou
2080: If X = 2080 Then y = #1/22/2080#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 30, 3): GoTo zuihou
2081: If X = 2081 Then y = #2/9/2081#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 0, 0): GoTo zuihou
2082: If X = 2082 Then y = #1/29/2082#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 30, 29, 29, 30, 29, 30, 29, 29, 30, 30, 7): GoTo zuihou
2083: If X = 2083 Then y = #2/17/2083#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 0, 0): GoTo zuihou
2084: If X = 2084 Then y = #2/6/2084#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 0, 0): GoTo zuihou
2085: If X = 2085 Then y = #1/26/2085#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 30, 29, 30, 30, 29, 30, 29, 30, 5): GoTo zuihou
2086: If X = 2086 Then y = #2/14/2086#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 29, 0, 0): GoTo zuihou
2087: If X = 2087 Then y = #2/3/2087#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 0, 0): GoTo zuihou
2088: If X = 2088 Then y = #1/24/2088#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 30, 29, 4): GoTo zuihou
2089: If X = 2089 Then y = #2/10/2089#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 29, 29, 29, 30, 29, 30, 30, 29, 0, 0): GoTo zuihou
2090: If X = 2090 Then y = #1/30/2090#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 8): GoTo zuihou
2091: If X = 2091 Then y = #2/18/2091#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 29, 30, 29, 30, 29, 29, 30, 29, 0, 0): GoTo zuihou
2092: If X = 2092 Then y = #2/7/2092#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 0, 0): GoTo zuihou
2093: If X = 2093 Then y = #1/27/2093#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 6): GoTo zuihou
2094: If X = 2094 Then y = #2/15/2094#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 30, 0, 0): GoTo zuihou
Array(29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 29, 0, 0): GoTo zuihou
2096: If X = 2096 Then y = #1/25/2096#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 30, 29, 30, 4): GoTo zuihou
2097: If X = 2097 Then y = #2/12/2097#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 29, 30, 29, 29, 29, 30, 29, 30, 30, 29, 30, 0, 0): GoTo zuihou
2098: If X = 2098 Then y = #2/1/2098#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 29, 29, 29, 30, 29, 30, 29, 30, 0, 0): GoTo zuihou
2099: If X = 2099 Then y = #1/21/2099#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 2): GoTo zuihou
2100: If X = 2100 Then y = #2/9/2100#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts = Array(30, 30, 29, 30, 29, 30, 29, 30, 29, 29, 30, 29, 0, 0): GoTo zuihou
2101: If X = 2101 Then y = #1/29/2101#: If glrq < y Then X = X - 1: GoTo zichengxu2
zuihou: n1 = 0: n2 = 0
For i = 1 To 13: n1 = n1 + yts(i): Next i
For i = 1 To n1: nl(1, i) = CStr(y + i - 1): Next i
For k = 1 To 13
If yts(14) <> 0 Then
If k - yts(14) < 1 Then nlm = CStr(k)
If k - yts(14) = 1 Then nlm = CStr("闰" & k - 1)
If k - yts(14) > 1 Then nlm = CStr(k - 1)
Else
nlm = CStr(k)
End If
For i = n2 + 1 To n1
If i <= n2 + yts(k) Then
nl(2, i) = CStr(X) & "-" & nlm & "-" & CStr(i - n2) '农历日期以"2014-2-1"或"1900-闰8-1"的形式表示
End If
Next i
n2 = n2 + yts(k)
Next k
End Sub
Sub nljr(rizi As String, yuefen As String, yuefenB As Variant, yfB As Variant, yr As String, yts As Variant, jr1 As String)
For i = 1 To 23
If rizi = 1 Then
If yuefen = yuefenB(1) Then jr1 = "春节": Exit For
If yuefen = yuefenB(i) Then jr1 = yfB(i): Exit For
Else
Exit For
End If
Next i
If yr = "1-15" Then jr1 = "元宵节"
If yr = "5-5" Then jr1 = "端午节"
If yr = "7-7" Then jr1 = "七夕情人节"
If yr = "7-15" Then jr1 = "中元节"
If yr = "8-15" Then jr1 = "中秋节"
If yr = "9-9" Then jr1 = "重阳节"
If yr = "12-8" Then jr1 = "腊八节"
If yr = "12-30" Then jr1 = "除夕"
If yr = "12-29" And yts(13) = 29 Then jr1 = "除夕"
If yr = "12-29" And yts(13) = 0 And yts(12) = 29 Then jr1 = "除夕" End Sub
Sub gljr(glrq As Date, jr3 As String)
Dim glrq2$
glrq2 = Strings.Mid(glrq, 6) '公历日期以"2-1"形式表示
If glrq2 = "1-1" Then jr3 = "元旦": Exit Sub
If glrq2 = "1-11" Then jr3 = "汉语拼音日": Exit Sub
If glrq2 = "2-14" Then jr3 = "情人节": Exit Sub
If glrq2 = "2-21" And Year(glrq) >= 2000 Then jr3 = "母语日": Exit Sub
If glrq2 = "3-5" And Year(glrq) >= 1963 Then jr3 = "学雷锋": Exit Sub If glrq2 = "3-8" And Year(glrq) >= 1910 Then jr3 = "妇女节": Exit Sub If glrq2 = "3-12" And Year(glrq) >= 1979 Then jr3 = "植树节": Exit Sub If glrq2 = "3-15" And Year(glrq) >= 1987 Then jr3 = "消权日": Exit Sub If glrq2 = "3-23" And Year(glrq) >= 1950 Then jr3 = "气象日": Exit Sub
If glrq2 = "4-1" Then jr3 = "愚人节": Exit Sub
If glrq2 = "4-7" And Year(glrq) >= 1950 Then jr3 = "卫生日": Exit Sub If glrq2 = "4-22" And Year(glrq) >= 1970 Then jr3 = "地球日": Exit Sub
If glrq2 = "5-1" Then jr3 = "劳动节": Exit Sub
If glrq2 = "5-4" And Year(glrq) >= 1919 Then jr3 = "青年节": Exit Sub If glrq2 = "5-12" And Year(glrq) >= 1986 Then jr3 = "护士节"
If glrq2 = "5-16" Then jr3 = "助残日": Exit Sub
If glrq2 = "5-31" And Year(glrq) >= 1988 Then jr3 = "无烟日": Exit Sub
If Month(glrq) = 5 And Weekday(glrq) = 1 And Day(glrq) > 7 And Day(glrq) < 15 And Year(glrq) >= 1914 Then jr3 = jr3 & "母亲节": Exit Sub
If glrq2 = "6-1" And Year(glrq) >= 1949 Then jr3 = "儿童节": Exit Sub
If glrq2 = "6-5" And Year(glrq) >= 1974 Then jr3 = "环境日": Exit Sub
If glrq2 = "6-6" And Year(glrq) >= 1996 Then jr3 = "爱眼日": Exit Sub
If glrq2 = "6-26" And Year(glrq) >= 1987 Then jr3 = "禁毒日": Exit Sub
If Month(glrq) = 6 And Weekday(glrq) = 1 And Day(glrq) > 14 And Day(glrq) < 22 And Year(glrq) >= 1910 Then jr3 = "父亲节": Exit Sub
If glrq2 = "7-1" And Year(glrq) >= 1921 Then jr3 = "建党节": Exit Sub
If glrq2 = "7-11" Then jr3 = "人口日": Exit Sub
If glrq2 = "8-1" And Year(glrq) >= 1927 Then jr3 = "建军节": Exit Sub
If glrq2 = "8-15" And Year(glrq) >= 1945 Then jr3 = "抗日战争胜利": Exit Sub
If glrq2 = "9-8" And Year(glrq) >= 1966 Then jr3 = "扫盲日": Exit Sub
If glrq2 = "9-10" And Year(glrq) >= 1985 Then jr3 = "教师节": Exit Sub
If glrq2 = "9-20" And Year(glrq) >= 1988 Then jr3 = "爱牙日": Exit Sub
If glrq2 = "9-27" And Year(glrq) >= 1979 Then jr3 = "旅游日": Exit Sub
If glrq2 = "9-28" Then jr3 = "孔子诞辰": Exit Sub
If glrq2 = "10-1" And Year(glrq) >= 1949 Then jr3 = "国庆节": Exit Sub
If glrq2 = "10-9" And Year(glrq) >= 1969 Then jr3 = "邮政日": Exit Sub
If glrq2 = "11-1" Then jr3 = "万圣节": Exit Sub
If glrq2 = "11-12" Then jr3 = "孙中山诞辰": Exit Sub
If Month(glrq) = 11 And Weekday(glrq) = 5 And Month(glrq - 21) = 11 Then jr3 = "感恩节": Exit Sub
If glrq2 = "12-1" And Year(glrq) >= 1988 Then jr3 = "艾滋病日": Exit Sub
If glrq2 = "12-5" And Year(glrq) >= 1985 Then jr3 = "志愿者日": Exit Sub
If glrq2 = "12-20" And Year(glrq) >= 1999 Then jr3 = "澳门回归日": Exit Sub
If glrq2 = "12-24" Then jr3 = "平安夜": Exit Sub
If glrq2 = "12-25" Then jr3 = "圣诞节"
If glrq2 = "12-26" Then jr3 = "毛泽东诞辰"
End Sub
20个Excel时间函数的使用方法 1.DATE 用途:返回代表特定日期的序列号。 语法:DATE(year,month,day) 参数:year为一到四位,根据使用的日期系统解释该参数。默认情况下,Excel for Windows使用1900日期系统,而Excel for Macintosh使用1904日期系统。Month代表每年中月份的数字。如果所输入的月份大于12,将从指定年份的一月份执行加法运算。Day 代表在该月份中第几天的数字。如果day 大于该月份的最大天数时,将从指定月份的第一天开始往上累加。 注意:Excel按顺序的序列号保存日期,这样就可以对其进行计算。如果工作簿使用的是1900日期系统,则Excel会将1900年1月1日保存为序列号1。同理,会将1998 年1月1日保存为序列号35796,因为该日期距离1900年1月1日为35795天。 实例:如果采用1900日期系统(Excel默认),则公式“=D ATE(2001,1,1)”返回36892。 2.DATEVaLUE 用途:返回date_text所表示的日期的序列号。该函数的主要用途是将文字表示的日期转换成一个序列号。 语法:DATEVaLUE(date_text) 参数:Date_text是用Excel日期格式表示日期的文本。在使用1900日期系统中,date_text必须是1900 年1月1日到9999年12月31日之间的一个日期;而在1904日期系统中,date_text必须是1904年1月1日到9999年12月31日之间的一个日期。如果date_text超出上述范围,则函数DATEVaLUE返回错误值#value!。 如果省略参数date_text中的年代,则函数DATEVaLUE使用电脑系统内部时钟的当前年代,且date_text中的时间信息将被忽略。 实例:公式“=DATEVaLUE("2001/3/5")”返回36955,DATEVaLUE("2-26")返回36948。 3.DAY 用途:返回用序列号(整数1到31)表示的某日期的天数,用整数 1 到31 表示。 语法:DAY(serial_number) 参数:Serial_number是要查找的天数日期,它有多种输入方式:带引号的文本串(如"1998/01/30")、序列号(如1900日期系统的35825表示的1998年1月30日),以及其他公式或函数的结果(如DATEVaLUE("1998/1/30"))。 实例:公式“=DAY("2001/1/27")”返回27,=DAY(35825)返回30, =DAY(DATEVaLUE("2001/1/25"))返回25。
excel使用日期和时间函数公式 excel使用日期和时间函数公式excel如何显示当前日期函数公式 显示当前年份函数:【=year(now())】 显示当前月份函数:【=month(now())】 显示当前日期函数:【=day((now()))】 显示当前星期函数:【=text(now(),"aaaa")】 显示当前准确时间:【=text(now(),"hh:mm:ss")】 显示当前年月日:【=today()】 显示当前年月日和时间:【=now()】 使用方法:直接在某单元格输入以上函数公式即可获得结果。 excel如何通过日期判断星期几 通过日期显示星期几:【=weekday(a2,2)】 通过日期显示中文带星期:【=text(a2,"aaaa")】 通过日期计算中文星期:【=text(a4,"aaa")】 通过日期计算英文星期简写:【=text(a5,"ddd")】 通过日期计算英文星期:【=text(a5,"dddd")】 使用方法:指定输入日期的单元格,输入以上函数公式即可获取星期。 excel如何求月份天数函数 求某日期的月份天数:
【=day(date(year(a2),month(a2)+1,0))】使用方法:需要指定包含日期的单元格。 直接求当前月份天数:【=day(eomonth(now(),0))】使用方法:直接在某单元格输入以上公式即可获取天数。 求当前月份天数减去周六和周日:【=sumproduct(--(mod(row(indirect(date(year(now()),month (now()),1)&":"&date(year(now()),month(now())+1,0))),7)>1 ))】使用方法:直接在某单元格输入以上公式即可获取天数。 excel快捷键快速获取日期时间 当然,在有些情况下,我们可以直接通过excel快捷键来获取当前的日期和时间。 获取当前年月日快捷键:【ctrl+;】 获取当前时间快捷键:【ctrl+shift+;】 获取年月日和时间:先在单元格使用【ctrl+;】,然后空格在使用快捷键【ctrl+shift+;】
EXCEL计算两个日期之间天数的函数语法 DATEDIF(start_date,end_date,unit) Start_date 为一个日期,它代表时间段内的第一个日期或起始日期。日期有多种输入方法:带引号的文本串(例如"2001/1/30")、系列数(例如,如果使用1900 日期系统则36921 代表2001 年 1 月30 日)或其他公式或函数的结果(例如,DATEVALUE("2001/1/30"))。有关日期系列数的详细信息,请参阅NOW。 End_date 为一个日期,它代表时间段内的最后一个日期或结束日期。 Unit 为所需信息的返回类型。 Unit 返回 "Y" 时间段中的整年数。 "M" 时间段中的整月数。 "D" 时间段中的天数。 "MD" start_date 与end_date 日期中天数的差。忽略日期中的月和年。 "YM" start_date 与end_date 日期中月数的差。忽略日期中的日和年。 "YD" start_date 与end_date 日期中天数的差。忽略日期中的年。 说明 Microsoft Excel 按顺序的系列数保存日期,这样就可以对其进行计算。如果工作簿使用1900 日期系统,则Excel 会将1900 年1 月1 日保存为系列数1。而如果工作簿使用1904 日期系统,则Excel 会将1904 年1 月1 日保存为系列数0,(而将1904 年1 月2 日保存为系列数1)。例如,在1900 日期系统中Excel 将1998 年 1 月 1 日保存为系列数35796,因为该日期距离1900 年 1 月 1 日为35795 天。请查阅Microsoft Excel 如何存储日期和时间。 Excel for Windows 和Excel for Macintosh 使用不同的默认日期系统。有关详细信息,请参阅NOW。 示例 DATEDIF("2001/1/1","2003/1/1","Y") 等于2,即时间段中有两个整年。 DATEDIF("2001/6/1","2002/8/15","D") 等于440,即在2001 年6 月1 日和2002 年8 月15 日之间有440 天。 DATEDIF("2001/6/1","2002/8/15","YD") 等于75,即在6 月1 日与8 月15 日之间有75 天,忽略日期中的年。 DATEDIF("2001/6/1","2002/8/15","MD") 等于14,即开始日期 1 和结束日期15 之间的差,忽略日期中的年和月。
1.DATE 用途:返回代表特定日期的序列号。 语法:DATE(year,month,day) 参数:year为一到四位,根据使用的日期系统解释该参数。默认情况下,Excel for Windows使用1900日期系统,而Excel for Macintosh使用1904日期系统。Month代表每年中月份的数字。如果所输入的月份大于12,将从指定年份的一月份执行加法运算。Day 代表在该月份中第几天的数字。如果day 大于该月份的最大天数时,将从指定月份的第一天开始往上累加。 注意:Excel按顺序的序列号保存日期,这样就可以对其进行计算。如果工作簿使用的是1900日期系统,则Excel会将1900年1月1日保存为序列号1。同理,会将1998年1月1日保存为序列号35796,因为该日期距离1900年1月1日为35795天。 实例:如果采用1900日期系统(Excel默认),则公式“=DATE(2001,1,1)”返回36892。 2.DATEVaLUE 用途:返回date_text所表示的日期的序列号。该函数的主要用途是将文字表示的日期转换成一个序列号。 语法:DATEVaLUE(date_text) 参数:Date_text是用Excel日期格式表示日期的文本。在使用1900日期系统中,date_text必须是1900年1月1日到9999年12月31日之间的一个日期;而在1904日期系统中,date_text必须是1904年1月1日到9999年12月31日之间的一个日期。如果date_text超出上述范围,则函数DATEVaLUE返回错误值#value!。 如果省略参数date_text中的年代,则函数DATEVaLUE使用电脑系统内部时钟的当前年代,且date_text中的时间信息将被忽略。 实例:公式“=DATEVaLUE("2001/3/5")”返回36955,DATEVaLUE("2-26")返回36948。 3.DAY 用途:返回用序列号(整数1到31)表示的某日期的天数,用整数1 到31 表示。 语法:DAY(serial_number) 参数:Serial_number是要查找的天数日期,它有多种输入方式:带引号的文本串(如"1998/01/30")、序列号(如1900日期系统的35825表示的1998年1月30日),以及其他公式或函数的结果(如DATEVaLUE("1998/1/30"))。 实例:公式“=DAY("2001/1/27")”返回27,=DAY(35825)返回30, =DAY(DATEVaLUE("2001/1/25"))返回25。 4.DAYS360 用途:按照一年360天的算法(每个月30天,一年共计12 个月),返回两日期间相差的天数。 语法:DAYS360(start_date,end_date,method)
Excel函数应用教程:日期时间函数 1.DATE 用途:返回代表特定日期的序列号. 语法:DATE(year,month,day) 参数:year为一到四位,根据使用的日期系统解释该参数。默认情况下,Excel for Windows使用1900日期系统,而Excel forMacintosh使用1904日期系统。Month代表每年中月份的数字。如果所输入的月份大于12,将从指定年份的一月份执行加法运算。Day代表在该月份中第几天的数字。如果 day 大于该月份的最大天数时,将从指定月份的第一天开始往上累加。 注意:Excel按顺序的序列号保存日期,这样就可以对其进行计算。如果工作簿使用的是1900日期系统,则Excel会将1900年1月1日保存为序列号1。同理,会将1998年1月1日保存为序列号35796,因为该日期距离1900年1月1日为35795天。 实例:如果采用1900日期系统(Excel默认),则公式“=DATE(2001,1,1)”返回36892。 2.DATEVaLUE 用途:返回date_text所表示的日期的序列号。该函数的主要用途是将文字表示的日期转换成一个序列号。 语法:DATEVaLUE(date_text) 参数:Date_text是用Excel日期格式表示日期的文本。在使用1900日期系统 中,date_text必须是1900年1月1日到9999年12月31日之间的一个日期;而在1904日期系统中,date_text必须是1904年1月1日到9999年12月31日之间的一个日期。如果date_text超出上述范围,则函数DATEVaLUE返回错误值#value!。 如果省略参数date_text中的年代,则函数DATEVaLUE使用电脑系统内部时钟的当前年代,且date_text中的时间信息将被忽略。 实例:公式“=DATEVaLUE(”2001/3/5")”返回36955,DATEVaLUE(”2-26")返回36948. 3.DAY 用途:返回用序列号(整数1到31)表示的某日期的天数,用整数 1 到31 表示。 语法:DAY(serial_number)
? 分别提取Excel单元格中的日期和时间 ?| ?1 ?2 ?3 如何提取Excel单元格中的日期和时间?只需要使用TEXT函数配合字符输出格式即可分别取出。 方法/步骤 1. 1 先看下表。 2. 2 A列是完整的日期时间综合格式。现在,我们要在B列取出A列中的日期,在C列取出A列的时间。 一、提取日期的方法 如下图。
选择B2单元格,在FX函数输入框中,输入 =TEXT(A2,"yyyy-mm-dd") 即可。 其中,TEXT函数表示要将A2单元格的内容转换为字符形式。而yyyy-mm-dd则是字符的格式,代表年-月-日。 二、提取时间的方法 如下图。 4. 4 选择C4单元格,在FX函数输入框中,输入 =TEXT(A4,"h:mm") 即可。 其中,TEXT函数表示要将A4单元格的内容转换为字符形式。而h:mm则是字符的格式,代表小时:分。 全文阅读分步阅读 加入杂志 步骤 ?1 ?2 ?3 如何提取Excel单元格中的日期和时间?只需要使用TEXT函数配合字符输出格式即可分别取出。 方法/步骤
先看下表。 2. 2 A列是完整的日期时间综合格式。现在,我们要在B列取出A列中的日期,在C列取出A列的时间。 一、提取日期的方法 如下图。 3. 3 选择B2单元格,在FX函数输入框中,输入 =TEXT(A2,"yyyy-mm-dd") 即可。 其中,TEXT函数表示要将A2单元格的内容转换为字符形式。而yyyy-mm-dd则是字符的格式,代表年-月-日。 二、提取时间的方法 如下图。 4. 4
选择C4单元格,在FX函数输入框中,输入 =TEXT(A4,"h:mm") 即可。 其中,TEXT函数表示要将A4单元格的内容转换为字符形式。而h:mm则是字符的格式,代表小时:分。
excel常用函数公式及技巧搜集(常用的)【身份证信息?提取】 从身份证号码中提取出生年月日 =TEXT(MID(A1,7,6+(LEN(A1)=18)*2),"#-00-00")+0 =TEXT(MID(A1,7,6+(LEN(A1)=18)*2),"#-00-00")*1 =IF(A2<>"",TEXT((LEN(A2)=15)*19&MID(A2,7,6+(LEN(A2)=18)*2),"#-00-00")+0,) 显示格式均为yyyy-m-d。(最简单的公式,把单元格设置为日期格式) =IF(LEN(A2)=15,"19"&MID(A2,7,2)&"-"&MID(A2,9,2)&"-"&MID(A2,11,2),MID(A2,7,4)& "-"&MID(A2,11,2)&"-"&MID(A2,13,2)) 显示格式为yyyy-mm-dd。(如果要求为“1995/03/29”格式的话,将”-”换成”/”即可) =IF(D4="","",IF(LEN(D4)=15,TEXT(("19"&MID(D4,7,6)),"0000年00月00日 "),IF(LEN(D4)=18,TEXT(MID(D4,7,8),"0000年00月00日")))) 显示格式为yyyy年mm月dd日。(如果将公式中“0000年00月00日”改成“0000-00-00”,则显示格式为yyyy-mm-dd) =IF(LEN(A1:A2)=18,MID(A1:A2,7,8),"19"&MID(A1:A2,7,6)) 显示格式为yyyymmdd。 =TEXT((LEN(A1)=15)*19&MID(A1,7,6+(LEN(A1)=18)*2),"#-00-00")+0 =IF(LEN(A2)=18,MID(A2,7,4)&-MID(A2,11,2),19&MID(A2,7,2)&-MID(A2,9,2)) =MID(A1,7,4)&"年"&MID(A1,11,2)&"月"&MID(A1,13,2)&"日" =IF(A1<>"",TEXT((LEN(A1)=15)*19&MID(A1,7,6+(LEN(A1)=18)*2),"#-00-00")) 从身份证号码中提取出性别 =IF(MOD(MID(A1,15,3),2),"男","女") (最简单公式) =IF(MOD(RIGHT(LEFT(A1,17)),2),"男","女") =IF(A2<>””,IF(MOD(RIGHT(LEFT(A2,17)),2),”男”,”女”),) =IF(V ALUE(LEN(ROUND(RIGHT(A1,1)/2,2)))=1,"男","女") 从身份证号码中进行年龄判断 =IF(A3<>””,DATEDIF(TEXT((LEN(A3)=15*19&MID(A3,7,6+(LEN(A3)=18*2),”#-00-00”),T ODAY(),”Y”),) =DATEDIF(A1,TODAY(),“Y”) (以上公式会判断是否已过生日而自动增减一岁) =YEAR(NOW())-MID(E2,IF(LEN(E2)=18,9,7),2)-1900 =YEAR(TODAY())-IF(LEN(A1)=15,"19"&MID(A1,7,2),MID(A1,7,4)) =YEAR(TODAY())-V ALUE(MID(B1,7,4))&"岁" =YEAR(TODAY())-IF(MID(B1,18,1)="",CONCATENATE("19",MID(B1,7,2)),MID(B1,7,4)) 按身份证号号码计算至今天年龄 =DATEDIF(TEXT((LEN(A1)=15)*19&MID(A1,7,6+(LEN(A1)=18)*2),"#-00-00"),TODAY(),"y") 以2006年10月31日为基准日,按按身份证计算年龄(周岁)的公式
e x c e l日期时间函数 This model paper was revised by the Standardization Office on December 10, 2020
日期时间函数 用途:返回代表特定日期的序列号。 语法:DATE(year,month,day) 参数:year为一到四位,根据使用的日期系统解释该参数。默认情况下,Excel for Windows使用1900日期系统,而Excel for Macintosh使用1904日期系统。Month代表每年中月份的数字。如果所输入的月份大于12,将从指定年份的一月份执行加法运算。Day代表在该月份中第几天的数字。如果 day 大于该月份的最大天数时,将从指定月份的第一天开始往上累加。 注意:Excel按顺序的序列号保存日期,这样就可以对其进行计算。如果工作簿使用的是1900日期系统,则Excel会将1900年1月1日保存为序列号1。同理,会将1998 年1月1日保存为序列号35796,因为该日期距离1900年1月1日为35795天。 实例:如果采用1900日期系统(Excel默认),则公式“=DATE(2001,1,1)”返回36892。 用途:返回date_text所表示的日期的序列号。该函数的主要用途是将文字表示的日期转换成一个序列号。 语法:DATEVaLUE(date_text)
参数:Date_text是用Excel日期格式表示日期的文本。在使用1900日期系统中,date_text必须是1900年1月1日到9999年12月31日之间的一个日期;而在1904日期系统中,date_text必须是1904年1月1日到9999年12月31日之间的一个日期。如果date_text超出上述范围,则函数DATEVaLUE返回错误值#value!。 如果省略参数date_text中的年代,则函数DATEVaLUE使用电脑系统内部时钟的当前年代,且date_text中的时间信息将被忽略。 实例:公式“=DATEVaLUE("2001/3/5")”返回36955,DATEVaLUE("2-26")返回36948。 用途:返回用序列号(整数1到31)表示的某日期的天数,用整数 1 到 31 表示。 语法:DAY(serial_number) 参数:Serial_number是要查找的天数日期,它有多种输入方式:带引号的文本串(如"1998/01/30")、序列号(如1900日期系统的35825表示的1998年1月30日),以及其他公式或函数的结果(如DATEVaLUE("1998/1/30"))。 实例:公式“=DAY("2001/1/27")”返回27,=DAY(35825)返回30, =DAY(DATEVaLUE("2001/1/25"))返回25。 用途:按照一年360天的算法(每个月30天,一年共计12 个月),返回两日期间相差的天数。
日期时间函数 1.DATE 用途:返回代表特定日期的序列号。 语法:DATE(year,month,day) 参数:year为一到四位,根据使用的日期系统解释该参数。默认情况下,Excel for Windows使用1900日期系统,而Excel for Macintosh使用1904日期系统。Month 代表每年中月份的数字。如果所输入的月份大于12,将从指定年份的一月份执行加法运算。Day代表在该月份中第几天的数字。如果day 大于该月份的最大天数时,将从指定月份的第一天开始往上累加。 注意:Excel按顺序的序列号保存日期,这样就可以对其进行计算。如果工作簿使用的是1900日期系统,则Excel 会将1900年1月1日保存为序列号1。同理,会将1998年1月1日保存为序列号35796,因为该日期距离1900年1月1日为35795天。 实例:如果采用1900日期系统(Excel默认),则公式“=DATE(2001,1,1)”返回36892。
2.DATEVaLUE 用途:返回date_text所表示的日期的序列号。该函数的主要用途是将文字表示的日期转换成一个序列号。 语法:DATEVaLUE(date_text) 参数:Date_text是用Excel日期格式表示日期的文本。在使用1900日期系统中,date_text必须是1900年1月1日到9999年12月31日之间的一个日期;而在1904日期系统中,date_text必须是1904年1月1日到9999年12月31日之间的一个日期。如果date_text超出上述范围,则函数DATEVaLUE返回错误值#value!。 如果省略参数date_text中的年代,则函数DATEVaLUE使用电脑系统内部时钟的当前年代,且 date_text中的时间信息将被忽略。 实例:公式“=DATEVaLUE("2001/3/5")”返回36955,DATEVaLUE("2-26")返回36948。 3.DAY 用途:返回用序列号(整数1到31)表示的某日期的天数,用整数 1 到31 表示。
Excel2010 日期函数的加减怎么做 篇一:Excel 时间加减函数 TMC Function TMC(time_text, minu) '时间格式:2012-1-11 16:28:14 Dim t2, t3, t4, y, m, d, zong_miao, miao1, miao2, shi, fen, miao, shi1, fen1, miao3 Dim t1, m1 Dim flag1 As Boolean Dim flag2 As Boolean t1 = time_text m1 = -minu flag1 = False flag2 = False If IsNumeric(m1) Then flag2 = True End If If IsDate(t1) Then flag1 = True End If If t1 = "" Or m1 = "" Or flag2 = False Or flag1 = False Then TMC = "" Exit Function End If y = Year(t1) m = Month(t1) d = Day(t1) shi = Hour(t1) fen = Minute(t1) miao = Second(t1) If shi = 0 Then shi = 24 End If zong_miao = shi * 3600 + fen * 60 + miao miao1 = m1 * 60 miao2 = zong_miao - miao1 shi1 = Int(miao2 / 3600) 1 / 8