[2017年整理]Excel自定义求农历函数——nongli(公历日期,显示序号)

上传人:豆浆 文档编号:910127 上传时间:2017-05-21 格式:DOC 页数:20 大小:141KB
返回 下载 相关 举报
[2017年整理]Excel自定义求农历函数——nongli(公历日期,显示序号)_第1页
第1页 / 共20页
[2017年整理]Excel自定义求农历函数——nongli(公历日期,显示序号)_第2页
第2页 / 共20页
[2017年整理]Excel自定义求农历函数——nongli(公历日期,显示序号)_第3页
第3页 / 共20页
[2017年整理]Excel自定义求农历函数——nongli(公历日期,显示序号)_第4页
第4页 / 共20页
[2017年整理]Excel自定义求农历函数——nongli(公历日期,显示序号)_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《[2017年整理]Excel自定义求农历函数——nongli(公历日期,显示序号)》由会员分享,可在线阅读,更多相关《[2017年整理]Excel自定义求农历函数——nongli(公历日期,显示序号)(20页珍藏版)》请在金锄头文库上搜索。

1、Option Base 1Dim 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 IntegerX

2、= Year(glrq)If X #1/28/2101# ThenNONGLI = ? Exit FunctionEnd If1、将 X 年的阴阳历等,通过运行程序 2,装入数组If X 2020 Then Call Array2(X, n1, glrq)2、查找阳历日期所在数组的序号 rqdi2bu: rq = 0If X = 1899 Thenrq = Day(glrq)ElseFor i = 1 To n1If nl(1, i) = glrq Then rq = i: Exit ForNext iEnd If3、填写 农历日期(包括节日、纪念日)Dim nongli1$, yr$, yu

3、efen$, yf$, rizi$, rz$Dim jr1 As String, jr2 As String, jr3 As Stringnongli1 = 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(y

4、r) - Strings.InStrRev(yr, -) 农历的日子以2形式表示Dim yuefenB As Variant, yfB As VariantyuefenB = 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(正月 , 二月, 三月, 四月, 五月, 六月, 七月, 八月, 九月, 十月, 冬月, 腊月, 闰二月, 闰三月, 闰四月, 闰五月, 闰六月, 闰七月, 闰八月, 闰九月, 闰十月, 闰冬月,

5、 闰腊月)For i = 1 To 23 农历的月份以汉字形式表示If yuefen = yuefenB(i) Then yf = yfB(i): Exit ForNext iDim rzB As VariantrzB = Array(初一, 初二, 初三, 初四, 初五, 初六, 初七, 初八, 初九, 初十, 十一, 十二, 十三, 十四, 十五, 十六, 十七, 十八 , 十九, 二十, 廿一, 廿二, 廿三, 廿四, 廿五, 廿六, 廿七, 廿八, 廿九, 三十 )For i = 1 To 30If rizi = i Then rz = rzB(i): Exit For 农历的日子以汉

6、字形式表示Next i农历节日-jr1If nlr = 3 Then Call nljr(rizi, yuefen, yuefenB, yfB, yr, yts, jr1)24 节气-ji2Dim xiaohan As Datexiaohan = Int(365.242646137797 * Year(glrq) - 693953.924646684)If glrq = xiaohan Then jr2 = 小寒Dim dahan As Datedahan = Int(365.242629416257 * Year(glrq) - 693939.16865395)If Year(glrq) =

7、 2082 Then dahan = dahan + 1If glrq = dahan Then jr2 = 大寒 Dim lichun As Datelichun = Int(365.24259976737 * Year(glrq) - 693924.346732722)If glrq = lichun Then jr2 = 立春 Dim yushui As Dateyushui = Int(365.242502247697 * Year(glrq) - 693909.331831532)If Year(glrq) = 2059 Or Year(glrq) = 2092 Then yushu

8、i = yushui + 1If glrq = yushui Then jr2 = 雨水Dim jingzhe As Datejingzhe = Int(365.242419549484 * Year(glrq) - 693894.233446856)If Year(glrq) = 2047 Then jingzhe = jingzhe + 1If glrq = jingzhe Then jr2 = 惊蛰Dim chunfen As Datechunfen = Int(365.242305278251 * Year(glrq) - 693878.966116765)If Year(glrq)

9、= 2051 Then chunfen = chunfen - 1If glrq = chunfen Then jr2 = 春分 Dim qingming As Dateqingming = Int(365.242254377632 * Year(glrq) - 693863.694715595)If glrq = qingming Then jr2 = 清明Dim guyu As Dateguyu = Int(365.242150678344 * Year(glrq) - 693848.193860396)If Year(glrq) = 2045 Then guyu = guyu - 1If

10、 glrq = guyu Then jr2 = 谷雨Dim lixia As Datelixia = Int(365.242041986455 * Year(glrq) - 693832.541539829)If Year(glrq) = 1973 Or Year(glrq) = 2035 Then lixia = lixia - 1If glrq = lixia Then jr2 = 立夏Dim xiaoman As Datexiaoman = Int(365.241895042148 * Year(glrq) - 693816.712806842)If Year(glrq) = 2070

11、Then xiaoman = xiaoman - 1If glrq = xiaoman Then jr2 = 小满Dim mangzhong As Datemangzhong = Int(365.241908822174 * Year(glrq) - 693801.095841903)If Year(glrq) = 2026 Or Year(glrq) = 2055 Or Year(glrq) = 2088 Then mangzhong = mangzhong - 1If glrq = mangzhong Then jr2 = 芒种Dim xiazhi As Datexiazhi = Int(

12、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 Datexiaoshu =

13、Int(365.241837274251 * Year(glrq) - 693769.530669936)If Year(glrq) = 2078 Then xiaoshu = xiaoshu - 1If glrq = xiaoshu Then jr2 = 小暑Dim dashu As Datedashu = Int(365.241703595146 * Year(glrq) - 693753.549346385)If glrq = dashu Then jr2 = 大暑Dim liqiu As Dateliqiu = Int(365.241890113665 * Year(glrq) - 6

14、93738.222492901)If Year(glrq) = 2035 Or Year(glrq) = 2068 Or Year(glrq) = 2097 Then liqiu = liqiu - 1If glrq = liqiu Then jr2 = 立秋 Dim chushu As Datechushu = Int(365.242316100823 * Year(glrq) - 693723.45493336)If Year(glrq) = 2020 Or Year(glrq) = 2049 Or Year(glrq) = 2053 Then chushu = chushu - 1If

15、glrq = chushu Then jr2 = 处暑Dim bailu As Datebailu = Int(365.242316100823 * Year(glrq) - 693707.939588367)If glrq = bailu Then jr2 = 白露 Dim qiufen As Dateqiufen = Int(365.242085926645 * Year(glrq) - 693692.119710911)If glrq = qiufen Then jr2 = 秋分Dim hanlu As Datehanlu = Int(365.242316100823 * Year(glrq) - 693677.304821888)If Year(glrq) = 2073 Then hanlu = hanlu - 1If glrq = hanlu Then jr2 = 寒露Dim shuangjiang As Dateshuangjiang = Int(365.242316100823 * Year(glrq) - 693662.177281271)If glrq = shuangjiang Then jr2 = 霜降Dim lidong As Datelidong = Int(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号