ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: YZC51

[讨论] 关于四柱的自定义函数

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-11-9 16:24 | 显示全部楼层
YZC51 发表于 2018-11-8 07:02
按节气时刻交割月建的附件,精确到秒!

B列为 v3.9 计算公元9999年 结果, 涂黄色行 出现一个破缺。

123.JPG

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-11-9 16:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请老师审阅楼下附件!
谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-11-9 16:54 | 显示全部楼层
请老师审阅!
24节气与四柱八字紫微版函数V4.1.rar (140.91 KB, 下载次数: 161)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-11-9 20:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

公元 9999年  依然存在如下问题,
1、  1-31  突然出现 乙未年 ,仅此一天??
2、  1-17 至 1-30   癸丑月 ?? (我计算结果为 乙丑月 )

如果有 公元 9999年24节气 的 准确时刻表,也许可以帮助 验证 。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-11-9 21:03 | 显示全部楼层
本帖最后由 YZC51 于 2018-11-9 21:09 编辑
zopey 发表于 2018-11-9 20:19
公元 9999年  依然存在如下问题,
1、  1-31  突然出现 乙未年 ,仅此一天??
2、  1-17 至 1-30   癸 ...

老师的四柱函数是正确的!我的代码问题出在9700年以后小寒的节气落在上一年12月末,所以出现此问题。
不过一万年后,现在的节气算法也不一定正确,因为地球是在做减速运行!
所以,下面的附件控制在7000年以内!
谢谢老师指教!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-11-9 21:08 | 显示全部楼层
9700年
·十一大 12-13(13 21:26:14) 冬至12-16(16 02:19:19) 小寒12-31(31 14:49:31)
·十二大 01-12(12 13:22:29) 大寒01-16(16 01:24:08) 立春01-31(31 09:54:40)
·正月小 02-11(11 06:12:47) 雨水02-15(15 15:53:15) 惊蛰03-02(02 19:34:35)
·二月大 03-12(12 23:06:12) 春分03-17(17 20:48:19) 清明04-01(01 20:09:53)
·三月大 04-11(11 15:18:13) 谷雨04-16(16 17:45:05) 立夏05-01(01 14:23:40)
·四月小 05-11(11 06:09:57) 小满05-16(16 10:21:16) 芒种05-31(31 06:33:46)
·五月大 06-09(09 19:10:22) 夏至06-15(15 03:18:08) 小暑06-30(30 01:27:42)
·六月小 07-09(09 06:08:07) 大暑07-15(15 01:11:46) 立秋07-30(30 03:12:58)
·七月小 08-07(07 15:21:15) 处暑08-14(14 07:25:04) 白露08-29(29 14:13:55)
·八月大 09-05(05 23:33:43) 秋分09-13(13 23:12:56) 寒露09-29(29 10:28:24)
·九月小 10-05(05 07:41:47) 霜降10-14(14 23:15:06) 立冬10-30(30 13:21:32)
·十月大 11-03(03 16:39:12) 小雪11-15(15 03:52:38) 大雪11-30(30 18:25:22)
9701年
·十一小 12-03(03 03:08:10) 冬至12-16(16 08:07:47) 小寒12-31(31 20:34:33)
·十二大 01-01(01 15:37:08) 大寒01-16(16 07:09:44)
·正月小 01-31(31 06:20:07) 立春01-31(31 15:34:56) 雨水02-15(15 21:37:39)
·二月大 03-01(01 23:10:23) 惊蛰03-03(03 01:13:23) 春分03-18(18 02:33:47)
·三月大 03-31(31 17:27:18) 清明04-02(02 01:49:55) 谷雨04-16(16 23:32:49)
·四月大 04-30(30 11:50:31) 立夏05-01(01 20:05:53) 小满05-16(16 16:11:13)
·五月小 05-30(30 04:44:15) 芒种05-31(31 12:17:55) 夏至06-15(15 09:09:56)
·六月大 06-28(28 19:03:37) 小暑06-30(30 07:13:16) 大暑07-15(15 07:05:19)
·七月小 07-28(28 06:40:34) 立秋07-30(30 08:59:31) 处暑08-14(14 13:20:18)
·八月大 08-26(26 16:10:04) 白露08-29(29 20:00:50) 秋分09-14(14 05:09:14)
·九月小 09-25(25 00:21:48) 寒露09-29(29 16:15:05) 霜降10-15(15 05:11:35)
·十月小 10-24(24 08:03:06) 立冬10-30(30 19:08:02) 小雪11-15(15 09:48:23)

9999年
·十一大 12-11(11 11:15:56) 冬至12-16(16 02:35:18) 小寒12-31(31 15:31:59)
·十二小 01-10(10 01:09:06) 大寒01-16(16 02:40:09) 立春01-31(31 11:55:58)
·正月大 02-08(08 13:31:08) 雨水02-15(15 18:43:04) 惊蛰03-02(02 23:16:43)
·二月小 03-10(10 00:49:01) 春分03-18(18 01:20:11) 清明04-02(02 01:27:34)
·三月小 04-08(08 11:35:23) 谷雨04-16(16 23:39:58) 立夏05-01(01 20:45:50)
·四月大 05-07(07 22:08:27) 小满05-16(16 16:58:00) 芒种05-31(31 13:12:07)
·五月小 06-06(06 08:31:31) 夏至06-15(15 09:44:27) 小暑06-30(30 07:29:30)
·六月大 07-05(05 18:50:03) 大暑07-15(15 06:38:10) 立秋07-30(30 07:55:04)
·七月小 08-04(04 05:27:23) 处暑08-14(14 11:18:06) 白露08-29(29 17:14:09)
·八月大 09-02(02 17:01:09) 秋分09-14(14 01:23:57) 寒露09-29(29 11:51:50)
·九月小 10-02(02 06:02:22) 霜降10-15(15 00:02:58) 立冬10-30(30 13:39:42)
·十月大 10-31(31 20:34:06) 小雪11-15(15 03:59:15)
10000年
·十一大 11-30(30 12:07:27) 大雪11-30(30 18:27:43) 冬至12-16(16 08:26:11)
·十二小 12-30(30 03:58:47) 小寒12-31(31 21:14:53) 大寒01-16(16 08:29:28)
·正月大 01-28(28 19:31:36) 立春01-31(31 17:35:46) 雨水02-16(16 00:30:58)
·二月大 02-27(27 10:23:21) 惊蛰03-02(02 04:54:55) 春分03-17(17 07:07:38)
·三月小 03-28(28 00:18:16) 清明04-01(01 07:05:53) 谷雨04-16(16 05:28:31)
·四月大 04-26(26 13:01:23) 立夏05-01(01 02:26:01) 小满05-15(15 22:49:11)
·五月小 05-26(26 00:23:38) 芒种05-30(30 18:55:19) 夏至06-14(14 15:38:51)
·六月小 06-24(24 10:32:32) 小暑06-29(29 13:15:29) 大暑07-14(14 12:34:46)
·七月大 07-23(23 19:55:45) 立秋07-29(29 13:42:13) 处暑08-13(13 17:14:48)
·八月小 08-22(22 05:13:37) 白露08-28(28 23:00:35) 秋分09-13(13 07:18:57)
·九月大 09-20(20 15:06:12) 寒露09-28(28 17:37:10) 霜降10-14(14 05:55:55)
·十月小 10-20(20 02:04:04) 立冬10-29(29 19:25:20) 小雪11-14(14 09:50:45)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-11-9 21:10 | 显示全部楼层
附件来啦!
24节气与四柱八字紫微版函数V4.2.rar (223.39 KB, 下载次数: 406)

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-11-9 21:15 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
函数调整如下!
Function sizhu(birth, Optional gs As Integer = 0) As String
    Dim LSJZ
    If Year(birth) > 7000 Then Exit Function
    If Len(birth) = 0 Then Exit Function
    tt$ = "甲子 乙丑 丙寅 丁卯 戊辰 已巳 庚午 辛未 壬申 癸酉 甲戌 乙亥 " _
        & "丙子 丁丑 戊寅 已卯 庚辰 辛巳 壬午 癸未 甲申 乙酉 丙戌 丁亥 " _
        & "戊子 已丑 庚寅 辛卯 壬辰 癸巳 甲午 乙未 丙申 丁酉 戊戌 已亥 " _
        & "庚子 辛丑 壬寅 癸卯 甲辰 乙巳 丙午 丁未 戊申 已酉 庚戌 辛亥 " _
        & "壬子 癸丑 甲寅 乙卯 丙辰 丁巳 戊午 已未 庚申 辛酉 壬戌 癸亥 "
    SX = "鼠牛虎兔龙蛇马羊猴鸡狗猪"
    LSJZ = Split(tt)
    'On Error Resume Next
'---------------------------------------------------------------------------------以上为变量定义
    yy = Year(birth): mm = month(birth): dd = Day(birth): hh = Hour(birth)
    birth1 = birth + 1 / 24: yy1 = yy - 4: birth2 = DateSerial(yy, 2, 1)
    lichun = getjq(birth2, , 4)                                                    '立春
'---------------------------------------------------------------------------------年柱已经调试好
    If lichun > birth Then yy1 = yy1 - 1
    nzhu = LSJZ(yy1 Mod 60): shux = Mid(SX, (yy1 Mod 12) + 1, 1)
'---------------------------------------------------------------------------------月柱已经调试好
    yue = getjq(birth, 2)
    If yue < 2 Then yy1 = yy1 - 4
    yzhu = LSJZ((yue + yy1 * 12) Mod 60)
'---------------------------------------------------------------------------------日柱已经调试好
    rcs = (Int(birth1) + 8) Mod 60
    rzhu = LSJZ(rcs)
'---------------------------------------------------------------------------------时柱已经调试好
    szhu = LSJZ((Int(birth) * 12 + 36 + hh / 2 + 1 / 12) Mod 60)
'------------------------------------------------------------------------------------结果输出
    sizhu = nzhu & "年 " & yzhu & "月 " & rzhu & "日 " & szhu & "时"
    sizhu1 = nzhu & "年" & yzhu & "月" & rzhu & "日"
    sizhu = Choose(gs + 1, sizhu, nzhu, yzhu, rzhu, szhu, shux, sizhu1)
End Function

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-11-9 21:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
YZC51 发表于 2018-11-9 21:03
老师的四柱函数是正确的!我的代码问题出在9700年以后小寒的节气落在上一年12月末,所以出现此问题。
不 ...

我现在给 year 设置的数据类型为 long,sizhu 函数有效范围是  天文学年:  -32766 至 32765 。

TA的精华主题

TA的得分主题

发表于 2018-11-9 21:33 | 显示全部楼层
zopey 发表于 2018-11-9 21:19
我现在给 year 设置的数据类型为 long,sizhu 函数有效范围是  天文学年:  -32766 至 32765 。

比long 更大的 整型数 是什么?超出范围 报错#value。

112.jpg 221.jpg
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 02:59 , Processed in 0.045862 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表