使用方法如下:

1、在Excel工作表界面下同时按Alt+F11键,打开VBA窗口,进入VBA编辑环境,在菜单中点击“插入-模块”,在当前窗口编辑区域中输入自定义函数代码,代码见下文。复制粘贴代码后,将窗口关闭。

2、在A1单元格中输入阳历日期,再在另一个单元格输入公式=NongLi(A1),就可以自动将阳历转换成农历了。

Public Function NongLi(Optional xx_date As Date)Dim MonthAdd(11), NongliData(99), TianGan(9), DiZhi(11), ShuXiang(11), DayName(30), MonName(12)Dim curTime, curYear, curMonth, curDayDim GongliStr, NongliStr, NongliDayStrDim i, m, n, k, isEnd, bit, TheDate'获取当前系统bai时间curTime = xx_date'天干名称duTianGan(0) = "甲"TianGan(1) = "乙"TianGan(2) = "丙"TianGan(3) = "丁"TianGan(4) = "戊"TianGan(5) = "己"TianGan(6) = "庚"TianGan(7) = "辛"TianGan(8) = "壬"TianGan(9) = "癸"'地支名称DiZhi(0) = "子"DiZhi(1) = "丑"DiZhi(2) = "寅"DiZhi(3) = "卯"DiZhi(4) = "辰"DiZhi(5) = "巳"DiZhi(6) = "午"DiZhi(7) = "未"DiZhi(8) = "申"DiZhi(9) = "酉"DiZhi(10) = "戌"DiZhi(11) = "亥"'属相名称ShuXiang(0) = "鼠"ShuXiang(1) = "牛"ShuXiang(2) = "虎"ShuXiang(3) = "兔"ShuXiang(4) = "龙"ShuXiang(5) = "蛇"ShuXiang(6) = "马"ShuXiang(7) = "羊"ShuXiang(8) = "猴"ShuXiang(9) = "鸡"ShuXiang(10) = "狗"ShuXiang(11) = "猪"'农历日期名称DayName(0) = "*"DayName(1) = "初一"DayName(2) = "初二"DayName(3) = "初三"DayName(4) = "初四"DayName(5) = "初五"DayName(6) = "初六"DayName(7) = "初七"DayName(8) = "初八"DayName(9) = "初九"DayName(10) = "初十"DayName(11) = "十一"DayName(12) = "十二"DayName(13) = "十三"DayName(14) = "十四"DayName(15) = "十五"DayName(16) = "十六"DayName(17) = "十七"DayName(18) = "十八"DayName(19) = "十九"DayName(20) = "二十"DayName(21) = "廿一"DayName(22) = "廿二"DayName(23) = "廿三"DayName(24) = "廿四"DayName(25) = "廿五"DayName(26) = "廿六"DayName(27) = "廿七"DayName(28) = "廿八"DayName(29) = "廿九"DayName(30) = "三十"'农历月份名称MonName(0) = "*"MonName(1) = "正"MonName(2) = "二"MonName(3) = "三"MonName(4) = "四"MonName(5) = "五"MonName(6) = "六"MonName(7) = "七"MonName(8) = "八"MonName(9) = "九"MonName(10) = "十"MonName(11) = "十一"MonName(12) = "腊"'公历每月前面的天数MonthAdd(0) = 0MonthAdd(1) = 31MonthAdd(2) = 59MonthAdd(3) = 90MonthAdd(4) = 120MonthAdd(5) = 151MonthAdd(6) = 181MonthAdd(7) = 212MonthAdd(8) = 243MonthAdd(9) = 273MonthAdd(10) = 304MonthAdd(11) = 334'农历数据NongliData(0) = 2635NongliData(1) = 333387NongliData(2) = 1701NongliData(3) = 1748NongliData(4) = 267701NongliData(5) = 694NongliData(6) = 2391NongliData(7) = 133423NongliData(8) = 1175NongliData(9) = 396438NongliData(10) = 3402NongliData(11) = 3749NongliData(12) = 331177NongliData(13) = 1453NongliData(14) = 694NongliData(15) = 201326NongliData(16) = 2350NongliData(17) = 465197NongliData(18) = 3221NongliData(19) = 3402NongliData(20) = 400202NongliData(21) = 2901NongliData(22) = 1386NongliData(23) = 267611NongliData(24) = 605NongliData(25) = 2349NongliData(26) = 137515NongliData(27) = 2709NongliData(28) = 464533NongliData(29) = 1738NongliData(30) = 2901NongliData(31) = 330421NongliData(32) = 1242NongliData(33) = 2651NongliData(34) = 199255NongliData(35) = 1323NongliData(36) = 529706NongliData(37) = 3733NongliData(38) = 1706NongliData(39) = 398762NongliData(40) = 2741NongliData(41) = 1206NongliData(42) = 267438NongliData(43) = 2647NongliData(44) = 1318NongliData(45) = 204070NongliData(46) = 3477NongliData(47) = 461653NongliData(48) = 1386NongliData(49) = 2413NongliData(50) = 330077NongliData(51) = 1197NongliData(52) = 2637NongliData(53) = 268877NongliData(54) = 3365NongliData(55) = 531109NongliData(56) = 2900NongliData(57) = 2922NongliData(58) = 398042NongliData(59) = 2395NongliData(60) = 1179NongliData(61) = 267415NongliData(62) = 2635NongliData(63) = 661067NongliData(64) = 1701NongliData(65) = 1748NongliData(66) = 398772NongliData(67) = 2742NongliData(68) = 2391NongliData(69) = 330031NongliData(70) = 1175NongliData(71) = 1611NongliData(72) = 200010NongliData(73) = 3749NongliData(74) = 527717NongliData(75) = 1452NongliData(76) = 2742NongliData(77) = 332397NongliData(78) = 2350NongliData(79) = 3222NongliData(80) = 268949NongliData(81) = 3402NongliData(82) = 3493NongliData(83) = 133973NongliData(84) = 1386NongliData(85) = 464219NongliData(86) = 605NongliData(87) = 2349NongliData(88) = 334123NongliData(89) = 2709NongliData(90) = 2890NongliData(91) = 267946NongliData(92) = 2773NongliData(93) = 592565NongliData(94) = 1210NongliData(95) = 2651NongliData(96) = 395863NongliData(97) = 1323NongliData(98) = 2707NongliData(99) = 265877'生成当前公历年、月、日 ==> GongliStrcurYear = Year(curTime)curMonth = Month(curTime)curDay = Day(curTime)GongliStr = curYear & "年"If (curMonth < 10) ThenGongliStr = GongliStr & "0" & curMonth & "月"ElseGongliStr = GongliStr & curMonth & "月"End IfIf (curDay < 10) ThenGongliStr = GongliStr & "0" & curDay & "日"ElseGongliStr = GongliStr & curDay & "日"End If'计算到初始时间1921年2月8日的天数:1921-2-8(正月初一)TheDate = (curYear - 1921) * 365 + Int((curYear - 1921) / 4) + curDay + MonthAdd(curMonth - 1) - 38If ((curYear Mod 4) = 0 And curMonth > 2) ThenTheDate = TheDate + 1End If'计算农历天干、地支、月、日isEnd = 0m = 0DoIf (NongliData(m) < 4095) Thenk = 11Elsek = 12End Ifn = kDoIf (n < 0) ThenExit DoEnd If'获取NongliData(m)的第n个二进制位的值bit = NongliData(m)For i = 1 To n Step 1bit = Int(bit / 2)Nextbit = bit Mod 2If (TheDate <= 29 + bit) ThenisEnd = 1Exit DoEnd IfTheDate = TheDate - 29 - bitn = n - 1LoopIf (isEnd = 1) ThenExit DoEnd Ifm = m + 1LoopcurYear = 1921 + mcurMonth = k - n + 1curDay = TheDateIf (k = 12) ThenIf (curMonth = (Int(NongliData(m) / 65536) + 1)) ThencurMonth = 1 - curMonthElseIf (curMonth > (Int(NongliData(m) / 65536) + 1)) ThencurMonth = curMonth - 1End IfEnd If'生成农历天干、地支、属相 ==> NongliStrNongliStr = "农历" & TianGan(((curYear - 4) Mod 60) Mod 10) & DiZhi(((curYear - 4) Mod 60) Mod 12) & "年"NongliStr = NongliStr & "(" & ShuXiang(((curYear - 4) Mod 60) Mod 12) & ")"'生成农历月、日 ==> NongliDayStrIf (curMonth < 1) ThenNongliDayStr = "闰" & MonName(-1 * curMonth)ElseNongliDayStr = MonName(curMonth)End IfNongliDayStr = NongliDayStr & "月"NongliDayStr = NongliDayStr & DayName(curDay)NongLi = NongliStr & NongliDayStrEnd Function

Excel阳历转农历VBA函数相关推荐

  1. 合并excel文件 C语言,如何用VBA函数合并多个文件

    Excel合并多个文件 Sub CombineWorkbooks() Dim FilesToOpen Dim x As Integer On Error GoTo ErrHandler Applica ...

  2. 将Vba代码转换成Php代码,将这个Excel公式转换成VBA代码(函数)

    将这个Excel公式转换成VBA代码(函数) 这是Excel中的公式,我试图转换为VBA代码: =IFERROR(IF(effDate>curDate,0,IF((curDate-effDate ...

  3. php根据公历获得农历,PHP获取阳历或农历的节日函数

    PHP获取阳历或农历的节日函数 ...@  2012-04-11  0  0  2906 //节日 function festival($today){ $temp=$f_lunar=$f_ ...

  4. Excel中Countif()函数运用技巧

    Excel查找本身是星号(*)等通配符的方法 在Excel中,我们使用查找替换命令查找本身是通配符的符号,比如要查找波浪号(~).星号 (*) 或问号 (?) 时,该如何操作呢? 查找本身是星号(*) ...

  5. c++字符数组整数转换中文大写金额的形式_数字大写转换烦,内置格式多缺陷, VBA函数来解难...

    观看视频更直观 在Excel中将数字转换为中文大写或小写,有两种方法,一种是设置数据格式:另一种是使用内置的隐蔽函数NumberString函数. 一.设置数据格式 在Excel中输入数字后,选中单元 ...

  6. python万年历差农历程序_Python实现公历(阳历)转农历(阴历)的方法示例

    本文实例讲述了Python实现公历(阳历)转农历(阴历)的方法.分享给大家供大家参考,具体如下: 两个要点: 1.公历转农历用了查表法(第126行) 2.节气用了天文法?(第176行) 运行图(背景是 ...

  7. access vba函数

    access vba函数 Abs 函数 返回参数的绝对值,其类型和参数相同. 语法 Abs(number) 必要的 number 参数是任何有效的数值表达式,如果 number 包含 Null,则返回 ...

  8. 处理excel,该选择VBA,还是python?

    作为表格软件的先驱,Excel可以说给我们的日常办公,做出了不可磨灭的贡献.随着excel功能的扩大,VBA.python等各类编程语言,开始被应用于excel当中. 于是乎,关于处理excel,该选 ...

  9. 利用条件函数判断计算机这课成绩及格情况,如何用Excel表格中的if函数来判断成绩及格不及格...

    如何用Excel表格中的if函数来判断成绩及格不及格 腾讯视频/爱奇艺/优酷/外卖 充值4折起 今天给大家介绍一下如何用Excel表格中的if函数来判断成绩及格不及格的具体操作步骤. 1. 打开电脑后 ...

  10. vba九九乘法表代码_Excel中使用vba函数制作九九乘法表的操作方法

    在excel中使用vba制作九九乘法表,如何进行具体操作的呢?今天,学习啦小编就教大家在Excel中使用vba函数制作九九乘法表的操作技巧. Excel中使用vba函数制作九九乘法表的操作步骤如下: ...

最新文章

  1. DMS是临时解决方案?
  2. 实时排行榜的后台数据功能实现
  3. 关于RESTful名字的含义
  4. NSString 去掉前后空格或回车符
  5. Windows Azure Storage (6) Windows Azure Storage之Table
  6. 转载:关于爱情、伴侣、承诺、人生、
  7. 一个简洁的个人导航页面源码
  8. spin lock自旋锁
  9. 物联网面临发展的主要难题是什么,物联网技术主要分为哪几类?
  10. 机器学习算法中的过拟合与欠拟合(转载)
  11. 蓝桥杯2017年第八届C/C++省赛B组第一题-购物单
  12. 交换机 路由器 三层交换机和路由器应用区别
  13. 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证....
  14. mysql 关键字 desc_mysql数据库表字段使用DESC等关键字报错及解决方法
  15. php codesniffer 代码规范,PHP_CodeSniffer自定义代码规范规则
  16. springboot整合jett实现模板excel数据导出
  17. 数字逻辑练习题(一)
  18. 前端,值得收藏的那些网站
  19. 数字金字塔 (15 分)
  20. springboot毕设项目软件外包服务39e05(java+VUE+Mybatis+Maven+Mysql)

热门文章

  1. 古代常见文学常识汇总
  2. 入门-误差逆传播算法
  3. 改变世界的webp图片技术,节约你的流量和带宽
  4. 目标检测:损失函数之SmoothL1Loss
  5. WINDOWS2008server安全策略设置
  6. 【excel函数小技巧】多种前置条件下的中位数该如何计算?
  7. candence的图纸大小设置_Candence基础知识1(CADENCE从原理图到PCB步骤 )
  8. 想当程序员吗?这11所大学计算机专业堪称国内顶级,高考考生千万不要错过
  9. 截止失真放大电路_模电必学基本放大电路
  10. Unity获取真实地理地图应用Terrain笔记