搜档网
当前位置:搜档网 › 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 - 1If 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 - 1If 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 + 1If 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

IfMonth(glrq)<>12Thendongzhi=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): GoTozuihou

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 GoTo1980 Else If X >= 1960 Then GoTo 1960 Else If X >= 1940 Then GoTo 1940

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

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

1914: If X = 1914 Then y = #1/26/1914#: 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, 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

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

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

1936: If X = 1936 Then y = #1/24/1936#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts =Array(30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 30, 29, 3): GoTo zuihou

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

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

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

1958: If X = 1958 Then y = #2/18/1958#: If glrq < y Then X = X - 1: GoTo zichengxu2 Else yts =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

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

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

1980: If X = 1980 Then y = #2/16/1980#: 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

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

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

相关主题