开通VIP,畅享免费电子书等14项超值服
首页
好书
留言交流
下载APP
联系客服
2024.11.18
排八字排大运,可以用excel搭建一个表格实现吗?试一下吧
说干就干,经过数日尝试,终于实现了手机上排盘软件的主要功能。
界面如下:
主要功能:
1,在黄色表格处,输入男女性别和阳历生辰,表格可自动计算出四柱干支及十神属性。
2,点击表中排大运按钮,则表格下半部分自动计算出生辰对应的大运,当前大运自动用绿色背景着重显示。当前流年用棕色背景着重显示。
在表格创建中,地支藏干,对应于日元的十神属性,12生旺死绝表,空亡,60甲子纳音这几项内容,主要用VLOOKUP函数以查询模式从子表格提取,比较简单。干支对应的某一个字,用MID函数来提取文本。
阳历与阴历的转化,采用了简单的函数形式,阴历=MID('甲乙丙丁戊己庚辛壬癸',MOD(TEXT(G3,'[$-130000]e')-3,10)+1,1)&MID('子丑寅卯辰巳午未申酉戌亥',MOD(TEXT(G3,'[$-130000]e')-4,12)+1,1)&'年'&IF(TEXT(G3,'[$-130000]m')*1=12,'腊',IF(TEXT(G3,'[$-130000]m')*1=1,'正',TEXT(G3,'[$-130000][DBNum1]m')))&'月'&IF(TEXT(G3,'[$-130000]d')-9<=1,'初',IF(TEXT(G3,'[$-130000]d')-29>=1,'卅',IF(TEXT(G3,'[$-130000]d')-19>=1,'廿','十')))&IF(RIGHT(TEXT(G3,'[$-130000]d'),1)*1=0,'',TEXT(RIGHT(TEXT(G3,'[$-130000]d'),1)*1,'[DBNum1]d'))&'日',
公式中G3是阳历所在单元格。
其它信息的提取,用了INDEX与MATCH的组合函数。
过程中遇到的难点主要有两个,
1,阳历生辰如何转化为四柱八字?
2,在四柱八字基础上如何匹配出大运信息?
这些对于老师傅来说这些都不难,但对于excel中自动运算,已超出了个人旧有的知识范围,只能在学习中解决。
一般函数不能实现问题中较复杂的逻辑运算,最后采用excelVBA功能来实现了它。
由阳历转化为干支纪年的四柱,涉及到历法的基础内容,而地球并非正圆,二十四节每节跨过黄经15度,冬春节日间隔稍长,夏秋节日间隔稍短,最靠谱的办法是用天文台的数据来修正,这是一般人不能实现的事。
四柱的转换,借用了已有的两个VBA模块,一个校正节气,一个换算。
节气换算代码如下:
四柱换算代码如下:
使用上面两个excel的代码模块,第一个问题的四柱换算解决。
第二个问题是大运推算。同样涉及二十四节的确定及起运时刻的确定,并且每段大运在不同年份,且要自动生成表格一一呈现,一开始感觉很难,不过对vba有了一些了解后,再找成熟的工具模板容易了不少,看懂了代码,就可以随便拿捏它。
推算大运的代码如下:
成年人已经对很多事熟视无睹,能做一些挑战自己知识边界的事,有动力又好玩,这是近来有益的一次收获。