夜雨聆风学习资料网

ARTICLE · 1357563

Excel 里最像台历的一张表:星期钉死不动,日期自己对号入座

Excel 里最像台历的一张表:星期钉死不动,日期自己对号入座

1 条核心公式|2 个微调钮|3 组条件格式|开篇动图 + 4 张实拍图|给 Excel 爱好者的一个参考例子

开篇动图|只点月份旁边的小箭头:3 月 → 6 月 → 9 月 → 12 月……1 号每次都准确落在它该在的那一列,月末多出来的日子自动隐身

用 Excel 做日历的函数挺普遍,SEQUENCE、EOMONTH、WEEKDAY 一组合,日期就排出来了。但有一种做法格外有意思:像台历一样,星期表头永远固定,日期自己去找对应的列。

这类版式不只是好玩。做统计台账、值班表、点检记录、月度看板的时候,一格日期配一行空白记录区,翻月就能换一整页,比按流水账往下堆直观得多。

今天拆的这份样表叫 2026年日历表.xlsx:一张工作表、两个小箭头、没有 VBA、没有辅助表。文章按 开篇动图 → 看结构 → 拆公式 → 隐身术 → 微调钮 → 复刻步骤 → 台账延伸 → 踩坑 的顺序讲,公式和单元格地址都按原文件写,照着就能做一遍。

结论|整张表真正的公式只有 1 条:=DATE(年,月,1)-WEEKDAY(DATE(年,月,1),2)+1,算出「1 号所在周的周一」;剩下 41 格全是 左格 +1。看见的「01日」是自定义格式,格子里装的仍是真日期;跨月的日子用条件格式刷成白底白字,看起来就消失了。

一、先看效果:点一下箭头,日期全体搬家

图 1|样表实拍:2026 年 3 月。星期从「一」到「日」固定不变,1 号正好落在最右边的「日」列,首行其余六格自动留白

标题下面那两个上下小三角,就是整张表唯一的「开关」:年份钮管 2020~2045,月份钮管 1~12。点一下,标题、星期下的日期、月末空白、粉色日期条,全部同步重排,手不用碰任何一个格子。

动图里从 3 月点到 12 月,最值得盯的是两件事:一是 1 号始终落在正确的星期列(3 月 1 日是周日、6 月 1 日是周一、12 月 1 日是周二);二是 不是本月的日期一格都不会露脸,既不会串到上月底,也不会拖到下月初。

二、一张表、四个区,没有隐藏工作表

区域
内容
作用
F5
 / H5
2026 / 3(数值)
唯一的两个输入值,由微调钮改写
D4:J4
合并单元格 + 标题公式
跟着年份自动变「2026年日历表」
D6:J6
一、二、三、四、五、六、日
手工输入,永远不动,这就是「台历感」的来源
D7:J18
6 周 × 2 行 = 42 个日期格 + 42 个空白格
奇数行放日期(粉色条),偶数行留白写台账

把日历区横着切开看,一排就是一周,两行为一组:

一
二
三
四
五
六
日
23日
24日
25日
26日
27日
28日
01日
↑ 日期行|↓ 空白记录行(行高 36,用来填当日数据)
02日
03日
04日
05日
06日
07日
08日
(此处写 3/2~3/8 的台账内容,可跨列合并)

示意|首行前六格其实是 2 月 23~28 日,被条件格式刷成白底白字后看不见;只有 3 月 1 日露出来

三、核心公式:一句话把 1 号钉回正确的列

整张表的起点在 D7,也就是第一周周一那一格:

公式 ① · D7(日历左上角第一格)复制

=DATE($F$5,$H$5,1)-WEEKDAY(DATE($F$5,$H$5,1),2)+1

原文件写作 =DATE(F5,H5,1)-WEEKDAY(DATE(F5,H5,1),2)+1,上面给的是加绝对引用的稳妥版,向右向下拖都不会跑偏。

片段
算出来是什么
DATE($F$5,$H$5,1)
所选年月的 1 号,一个真正的日期序列号
WEEKDAY(…,2)
1 号是本周第几天,参数 2 表示周一=1、周二=2……周日=7
1号 − 序号 + 1
往前退回 本周一:1 号是周几,就退几天,再补 1 天抵消

代入样表的 2026 年 3 月:3 月 1 日是周日,WEEKDAY(…,2)=7,于是 3/1 − 7 + 1 = 2/23。D7 就是 2 月 23 日(周一),一路 +1 到 J7 刚好是 3 月 1 日(周日)——和图 1 里右上角孤零零的「01日」完全对上。

原理|为什么是 42 格?一个月最多横跨 6 周(1 号落在周日、当月又有 31 天时),6 行 × 7 列 = 42 个连续日期,从「1 号所在周的周一」开始排,无论哪年哪月都装得下。不需要判断大小月、闰年,DATE 自己会算。

剩下 41 格没有第二条「聪明公式」,全是老老实实加一天:

公式 ② · 向右 +1,换行接上一周复制

E7  =D7+1    → 右拉到 J7 D9  =J7+1    → E9 =D9+1,右拉到 J9 D11 =J9+1    → 依此类推 D13 =J11+1   D15 =J13+1   D17 =J15+1

四、看着是「01日」,其实还是能算的日期

这一层是很多人复刻完却没意识到的关键:所有「日」字都是自定义数字格式变出来的,不是文本拼接。格子里的值仍然是 46076、46077 这样的日期序列号。

单元格
自定义格式
显示成
F5
 年份
General"年"
2026年
H5
 月份
General"月"
3月
D7:J17
 日期行
dd"日"
01日、02日……31日

图 2|把 3 月首行放大:只有右上角的「01日」露出来,左边六格其实是 2 月 23~28 日;「日」字是 dd"日" 加的,值仍然是日期

公式 ③ · 标题(D4,已合并 D4:J4)复制

=$F$5&"年"&"日历表"

划重点|千万别用 ="01"&"日" 之类的文本拼日历。一旦格子变成文本,后面想按日期做 SUMIFS、COUNTIFS、TODAY() 比对就全废了。改显示、不改值,是这类表格能拿去做台账的前提。

五、跨月的日子怎么「消失」:3 组逐格判断

42 格里总有一部分是上月末或下月初。样表没有用 IF 把公式改复杂,而是让它们照常算,再用条件格式刷成白底白字——看起来是空格,值还在,方便继续参与计算。

公式 ④ · 条件格式(3 组,公式规则)复制

应用于 D7:J8    →  =MONTH(D$7)<>$H$5 应用于 D15:J16  →  =MONTH(D$15)<>$H$5 应用于 D17:J18  →  =MONTH(D$17)<>$H$5  格式 → 字体:白色;填充:白色(实心)

注意公式里的 D$7:列相对、行绝对。往右一格会自动变成 E$7、F$7……于是「这一列顶上的日期属不属于所选月份」成了逐格判断,同一行里有的留、有的隐,正是首尾两周需要的效果;往下覆盖到偶数行,连空白记录行也一起刷白。

应用区域
为什么要管它
D7:J8
 第一周
几乎总有一半是上个月末
D15:J16
 第五周
短月或月初靠后时,可能已经跨到下月
D17:J18
 第六周
多数月份整周都是下月初,整行该留白
D9:J14
 第二~四周
不用写
:这 21 格任何月份都稳稳落在本月内

图 3|切到 6 月:1 号正好是周一,日期从左上角顺着排到 30 日,第 6 周整行留白,没有半格串到 7 月

图 4|切到 12 月:1 号落在「二」列,首行左侧两格空着,31 日收在「四」列,后面同样干干净净

原文件在最末两周还多挂了两条整行判断(=MONTH($D$17)<>$H$5,分别作用于 D17:J17 和 D18:J18,只改边框不改颜色),用来处理第六周整周跨月时的收尾观感。属于锦上添花,先把上面 3 组做对,效果就已经齐了。

结论|「隐藏」而不是「不算」,是这张表最讲究的地方:公式层只管生成 42 个连续日期,显示层只管挑出本月那几天。两层互不干扰,所以翻月时不用改任何公式,也不会把日期算错。

六、两个小箭头:数值调节钮(表单控件)

Excel:开发工具 → 插入 → 表单控件 → 数值调节钮(WPS 里也叫微调按钮 / 微调项)。画两个按钮,右键「设置控件格式 → 控制」:

参数
年份钮
月份钮
当前值
2026
3
最小值 / 最大值
2020 / 2045
1 / 12
步长
1
1
单元格链接
$F$5$H$5

踩坑提醒|① 选表单控件,不要选 ActiveX 控件;② 链接单元格必须是能存数值的普通单元格,合并单元格、文本格式都不行;③ 按钮只是把数值写进 F5 / H5,真正驱动日历的是公式,所以手动往 F5 敲个年份也一样能翻页;④ 网页版 Excel 与手机端通常不响应表单控件,桌面版最稳。

七、照着做一遍:8 步复刻

  1. 摆输入
    :F5 填 2026、H5 填 3,分别设自定义格式 General"年"、General"月";G5 手打「年」旁边的文字排版按需调整。
  2. 插控件
    :按第六节的参数做两个数值调节钮,先点几下确认 F5 / H5 会跟着变。
  3. 做标题
    :合并 D4:J4,输入 =$F$5&"年"&"日历表",字号调大、居中,行高约 46。
  4. 钉表头
    :D6:J6 填「一~日」,灰底白字加边框,居中,行高 25。
  5. 写起点
    :D7 输入公式 ①,E7 写 =D7+1 右拉到 J7。
  6. 铺满 6 周
    :D9 写 =J7+1、E9 写 =D9+1 右拉;下面四行照公式 ② 依次接龙(行号 11、13、15、17)。
  7. 做版式
    :所有日期行设 dd"日" + 浅粉填充;偶数行留空、行高 36;D7:J18 统一加细边框。标题、表头、日期、记录区一次对齐。
  8. 加隐身
    :按公式 ④ 建 3 组条件格式(字体白 + 填充白),应用区域与公式一一对应,最后点微调钮从 1 月翻到 12 月逐月验一遍。

八、拿去做台账:空白行才是主角

如果只想要一张好看的日历,做到第七步就够了。但这份样表特意把每个日期下面留了一整行空白,明显是给记录用的:值班人、点检结果、当日产量、异常情况,都可以按周成块填写,翻月等于翻页。

因为日期格是真日期,明细表里的流水数据可以直接按格汇总。比如在旁边做一个月度汇总区:

公式 ⑤ · 台账延伸(示例,可直接改字段)复制

按某格日期汇总数量   =SUMIFS(明细[数量],明细[日期],D$7) 
统计当日异常条数     =COUNTIFS(明细[日期],D$7,明细[状态],"异常") 
条件格式·高亮今天    =D$7=TODAY() 
条件格式·标出周末    =WEEKDAY(D$7,2)>5
  • 月度看板
    :右侧放一块汇总区,用 SUMIFS 按本月首末日圈范围,翻月自动换数。
  • 节假日 / 排班
    :加一张节日对照表,用 VLOOKUP 或条件格式把特殊日期标成另一种底色。
  • 打印成册
    :把 D4:J18 设为打印区域,12 个月循环打印就是一本台历式记录本。
  • 一个提醒
    :被刷白的上月 / 下月日期仍然有值,做汇总时记得加 MONTH(日期)=$H$5 之类的条件,别把隔壁月份的数算进来。

九、常见坑对照表

现象
原因
处理
整张表整体错位一天 / 周日排到第一列
WEEKDAY
 漏了第二参数 2,默认周日=1
写成 WEEKDAY(日期,2),周一=1 才对得上中文表头
跨月日期没隐身,粉色条露在外面
只把字体设成白色,忘了同步设白色填充
条件格式里字体 + 填充都要刷白
隐身规则把整行都藏了,1 号也不见
公式里把列也锁死成 $D$7
用 D$7:列相对、行绝对,逐格判断
点箭头数字变了,日历不动
链接单元格填错,或计算模式被改成手动
检查「单元格链接」;公式 → 计算选项 → 自动
「01日」没法参与求和 / 比对
用文本拼接造了日期
只改自定义格式 dd"日",值保持日期
2 月 / 闰年排错
自己用 IF 判断大小月
交给 DATE,闰年它自己会算
网页版 / 手机上箭头点不动
表单控件不受支持
桌面版 Excel / WPS 使用;或直接改 F5、H5

十、把思路拉直

  • 定位靠一个公式
    :先找到「1 号所在周的周一」,日历就从固定表头自然长出来了。
  • 生成靠连续序列
    :42 格一路 +1,不判断月份、不判断闰年,最省心也最不容易错。
  • 呈现靠两层分离
    :公式管「有什么」,自定义格式和条件格式管「给人看什么」。
  • 交互靠一个数值
    :微调钮只改年份和月份两个数字,全表靠引用自动重算——这是所有「一钮切换」看板的通用套路。

换个场景照样能用:把「一~日」换成「班次 A / B / C」,就是排班表;把空白记录行换成工序、设备、检查结果,就是月度点检台账。样子是台历,骨子里是一张以日期为主键的二维表。给各位 Excel 爱好者留个参考例子,欢迎照着改出更顺手的版本。

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料