更新时间:作者:小小条
文/孔述
2025年已落下帷幕,爱好书画的朋友落款时,总不忘写上“乙巳”年——这个落款实际上就是人们常说的“天干地支”纪年,用函数计算的结果也与之吻合。
那么,2026年的落款又该怎么算呢?

2026丙午年
下面就来介绍如何用函数计算天干地支。
古人把“年月日时”比作支撑“时间”的四根柱子,简称“四柱”。为了推算“四柱”,古人创造了口诀推算(包括排除法,即排除歌诀中未提及的元素)、公式计算(结果为0时计为12或10)、手指掐算及翻阅万年历等多种方法,其实质不外乎计算法与查询法两类。
查询法本质上是前人计算结果的汇总,既然这些数据都能通过计算得到,现代计算工具自然也能高效完成这一功能。事实上,市场上已有不少软件可查阅流年运势等相关资料。
(一)函数计算的基础数据
Excel的内置日期函数(如DATE、DATEDIF等)以1900年为起点,无法直接处理1900年之前的日期,但可通过TEXT函数或其他函数变通解决。
(1)天干地支、十二建星与生肖:这是后续万年历制作及所有计算的基础依据。
基础数据:包含天干、地支、阴阳五行与生肖的基本数据及对应关系,是所有推算的基准。
其中,B1=SEQUENCE(1,12,1,1) 用于自动生成1-12的数字序列;B12=B5&B11 向右拖动可生成对应的生肖时辰。
(2)六十甲子生成
此表看所有数据均为函数自动生成,无需手动输入。
B14=TAKE(B2:K2,1) 生成B14-K14的天干序列;
A15=TOCOL(B5:M5) 生成A15-A26的地支序列;
L15=INDEX($B$8:$M$8,MATCH(A15,$B$5:$M$5,)) 生成对应的五行;
B15=IF(MOD(ROW($A15),2)<>0,IF(MOD(COLUMN(B$2),2)=0,B$2&$A15,""),IF(MOD(COLUMN(B$2),2)=0,"",B$2&$A15)),将此公式向右拖动至K列、向下拖动至第26行,即可生成甲子干支表。这种对应关系遵循阳干配阳支、阴干配阴支的逻辑,从M列可看出甲、丙、戊等阳干的分布。但年份顺序不能跳过乙、丁、己等阴干,必须按天干地支的自然顺序排列组合,因此需将公式继续向下拖动至第74行,才能构成完整的六十甲子组合。人的年龄干支顺序也按此规律计算(标黄色部分为示例)
(3)基准甲子年的起始
关于首个甲子年的起始,目前主要有三种说法:
第一种:官方正式确认的干支纪年起始年份为公元124年(汉安帝延光三年)。干支纪年法于汉代正式确立,汉章帝元和二年(公元85年)颁布《四分历》,固定以乙酉岁为起始,据此推算首个甲子年为汉安帝延光三年(公元124年)。这一结论有《后汉书》等史料支撑,是学界公认的历史事实。
第二种:黄帝纪年说。部分文献推算黄帝即位年(约公元前2697年)为第一个甲子年,但此说多属传说或后世历法推演,缺乏考古实证支撑。
第三种:公元4年说。有观点认为公元4年为首个甲子年,实则是通过干支周期倒推的结果,并非实际历史记载。
需说明的是,不同说法会导致推算结果出现偏差。
(4)官方“万年历”的生成与使用
本文采用官方“万年历”,生成公元124年至2103年间的天干地支
对应表,先介绍制作方法,再说明使用逻辑,制作逻辑与上文基本一致。
O15=INDEX(MID("甲乙丙丁戊己庚辛壬癸",IF(MOD(ROW(A1),10)=0,10,MOD(ROW(A1),10)),1),,)&INDEX(MID("子丑寅卯辰巳午未申酉戌亥",MOD(ROW(A1)-1,12)+1,1),,),向下拖动可生成甲子、乙丑等干支组合;P15=SEQUENCE(60,1,124,1) 向下生成60个连续的年号(从124年开始);Q15=SEQUENCE(1,32,P15+60),从公元124年起向左生成32个甲子年。选定Q5至AV15整行,向下拖动至第74行,1980年(距124年近2000年)及周边年份的表格数据会自动生成,对应的天干地支也同步生成。
若要查询某年的天干地支,只需在表中检索即可。
例如2018年对应“戊戌”,位于图中颜色交汇的坐标处;1997年对应“丁丑”,左边红色区域及右边AW16处会自动显示“丁丑”,无需逐一查找。
如何实现自动查询?为展示效果,放大局部视图:AW19为年份输入框,下方设有滑动按钮,点击上下键可调整年份(如下键调整为1996年),系统会立即显示1996年为“丙子”。该按钮功能通过开发工具中的链接控制,此处不作详细讲解。
P14=IFERROR(AJ15&"-"&(AK15-1),AJ15&"-"),向右拖动至AV列,生成14行的区间年份;AW14=LOOKUP(AW19,P15:AV15,P14:AV14),用于查询所查年份所在的区间。
(二)“四柱”计算的具体方法
1、年干支计算
B3、C3、D3、E3分别为需计算查询的年、月、日、时;D4、D5分别为对应的年干、年支,E4为年干支结果(如“乙巳”)。同理,E9、E15、E8分别为月、日、时干支,F5为万年历自动查询的结果。例如2026年自动查询显示为“丙午”,与计算结果一致;当E5结果正确时,会显示√并高亮,错误时则提示警示,目前状态为√。
计算公式如下:
C4=IF(MOD(B3-3,10)=0,10,MOD(B3-3,10))(计算年干数);
C5=IF(MOD(B3-3,12)=0,MOD(B3-3,12)+12,MOD(B3-3,12))(计算年支数);
D4=INDEX(数据基础!B2:K2,MATCH(C4,数据基础!B1:K1,))(自动查询年干);
D5=INDEX(数据基础!B5:M5,MATCH(C5,数据基础!B1:M1,))(自动查询年支);
E4=D4&D5(组合年干支);
F3=INDEX(对照表!H:H,MATCH(B7,对照表!A:A,))(查询当年阴历月);
C6=IFS(C3=1,13,C3=2,14,OR(C3=3,C3=4,C3=5,C3=6,C3=7,C3=8,C3=9,C3=10,C3=11,C3=12),C3)(计算日支所需的中间数据)。
2、月干支计算
C9=IF(MOD(C8*2+F3,10)=0,10,MOD(C8*2+F3,10))(计算月干数);
D9=INDEX(数据基础!B2:K2,MATCH(C9,数据基础!B1:K1,))(获取月干);
D10=INDEX(数据基础!B9:M9,MATCH(F3,数据基础!B1:M1,))(通过阴历月获取月支);
E9=D9&D10(组合月干支)。
3、日干支计算
日干支计算较为复杂,需明确Y(世纪,如2021年的前两位为20)、M(年份后两位,如2021年为21)、D(月、日),例如2026年6月初5
对应的Y=20、M=26、D=6-5。此外,月份需判断奇偶,公式为F2=IF(MOD(C3,2)=0,6,0)。
日干数公式:C15=IF(MOD(4*B14+INT(B14/4)+5*C14+INT(C14/4)+INT(3*(C6+1)/5)+F14-3,10)=0,10,MOD(4*B14+INT(B14/4)+5*C14+INT(C14/4)+INT(3*(C6+1)/5)+F14-3,10));
日支数公式:C16=IF(MOD(8*B14+INT(B14/4)+5*C14+INT(C14/4)+INT(3*(C6+1)/5)+F14+7+F12,12)=0,12,MOD(8*B14+INT(B14/4)+5*C14+INT(C14/4)+INT(3*(C6+1)/5)+F14+7+F12,12));
以上计算均需用到前面“算日支需用”的中间数据。
自动获取日干:D15=IF(INDEX(数据基础!B2:K2,MATCH(C15,数据基础!B1:K1,))=0,10,INDEX(数据基础!B2:K2,MATCH(C15,数据基础!B1:K1,)));
自动获取日支:D16=IF(INDEX(数据基础!B5:M5,MATCH(C16,数据基础!B1:M1,))=0,12,INDEX(数据基础!B5:M5,MATCH(C16,数据基础!B1:M1,)))。
时干支计算需用到“日干数”“时干表”及“时辰表”:
C18=INDEX(C21:C30,MATCH(D15,B21:B30,))(生成时干);
C19=INDEX(D33:D44,MATCH(F19,C33:C44,))(生成时支)。
4、阳历阴历对照表
此表按传统农历生成,主要用于月干支计算时获取阴历月,以下简单介绍几个关键公式:
D2=TEXT(A2,"yyyy-mm"),转成公历年计算方式
E2=RIGHT(C2,LEN(C2)-FIND("年",C2)),提取农历月日,便于后期对照计算月支
G2=@SWITCH(TRUE,MID(C2,SEARCH("年",C2)+LEN("年"),SEARCH("月",C2)-SEARCH("年",C2)-LEN("年"))="正","一",MID(C2,SEARCH("年",C2)+LEN("年"),SEARCH("月",C2)-SEARCH("年",C2)-LEN("年"))="腊","十二",MID(C2,SEARCH("年",C2)+LEN("年"),SEARCH("月",C2)-SEARCH("年",C2)-LEN("年"))),提取农历大写月,因为出现"正"、"腊"月需要转换为可计算的数字,故还需转换为对应的小写数字。
I2=BYROW(E2:E73001,LAMBDA(x,IF(ISNUMBER(SEARCH("闰",x)),"闰",""))),显示有闰月并高显红色,用于月支推算
有闰月的部分年份四年一闰局部
若要继续随机查询,只需输入对应年月时辰,结果瞬间显示。例如查询2009年9月九日9:30的年月日天干地支,显示如下:
注意输入时辰会自动选择对应的"时支"并高显红色,
G32=--TEXT(E3,"HH")即把带分的时间转换为整时数,
F33=LOOKUP(G32,E33:E44,C33:C44) 根据整时数自动查找对应的时支。
为了验证上述软件结果是否一致: 输入2025年9月22日10:30分
结果一致。读者可以与上文图片比较,或通过其他方法查询比对。
需注意的是,此处仅介绍基础算法,由于社会上流传计算规则较多,各种规则计算结果可能存在偏差。
"授人以鱼不如授人以渔",本文主要阐述方法。欢迎各位方家及有兴趣的朋友指正、交流。
版权声明:本文转载于今日头条,版权归作者所有,如果侵权,请联系本站编辑删除