文档库 最新最全的文档下载
当前位置:文档库 › Excel自定义求农历函数——nongli(公历日期,显示序号)

Excel自定义求农历函数——nongli(公历日期,显示序号)

Excel自定义求农历函数——nongli(公历日期,显示序号)
Excel自定义求农历函数——nongli(公历日期,显示序号)

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时间函数的使用方法

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使用日期和时间函数公式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计算两个日期之间天数的函数

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 之间的差,忽略日期中的年和月。

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默认),则公式“=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函数应用日期时间函数

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单元格中的日期和时间

? 分别提取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函数公式大全(日期)

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日为基准日,按按身份证计算年龄(周岁)的公式

excel日期时间函数

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 个月),返回两日期间相差的天数。

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默认),则公式“=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日期函数的加减怎么做

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

相关文档
相关文档 最新文档