网站首页
手机版

函数计算如何计算天干地支

更新时间:作者:小小条

文/孔述

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分

结果一致。读者可以与上文图片比较,或通过其他方法查询比对。

需注意的是,此处仅介绍基础算法,由于社会上流传计算规则较多,各种规则计算结果可能存在偏差。

"授人以鱼不如授人以渔",本文主要阐述方法。欢迎各位方家及有兴趣的朋友指正、交流。

版权声明:本文转载于今日头条,版权归作者所有,如果侵权,请联系本站编辑删除

为您推荐

阴阳·合和·气数

阴阳·合和·气数文/陈思桦 阴阳·合和·气数:中华文明“天人合一”观的生成脉络与内在逻辑—— 一种基于自然哲学的文化核心阐释 摘要:阴阳、合和、气数是中国传统思想中彼

2026-01-20 09:01

七十岁老头写的精短散文:《天空有多大》

天空有多大文/西门白甫网络图片天空有多大?太阳和月亮一直在丈量天空的大小。太阳白天上班,月亮夜晚上班。早晨,太阳从东山山顶出发,傍晚到西山山顶结束。为了丈量得准确,太阳走

2026-01-20 09:00

道口古镇,一座不仅有烧鸡味道的真正古镇

开场吃的东西,传播起来都是带味的。所以说起道口,首先想到的就是烧鸡。虽然来滑县之前一直没有吃过,但是这名声可是从小就根植于我的脑子里的。来滑县之后发现道口不只有烧鸡,还

2026-01-20 09:00

《豫北第一河:卫河》

卫河两岸一望无垠,冬日里它瘦而清澈,水流从容地淌过,仿佛一块巨大铜镜被无心遗落于豫北平原之上,默默映照苍天流云,也映照着千百年来人世的喧嚣与沧桑。这条河,人们称之为“豫北

2026-01-20 08:59

深圳中小学寒假放假时间定了!最长30天!

根据深圳市教育局发布的中小学校历2025—2026学年小学和初中最早开始放寒假从2026年1月31日开始最长30天↓↓↓ 义务教育阶段 寒假开始时间:2026年1月31日春季学期开学:2026年

2026-01-20 08:59

深圳中小学寒假放假时间来了!

8天的国庆中秋假期眨眼就结束了网友们表示“假期后劲太大了”此刻你是不是也感到精神不振、情绪低落?专家表示这可能是“节后综合征”建议上班前三天少干活适度摸鱼 小新掐

2026-01-20 08:58