制作 Excel 日历的两种思路:手动创建和 使用公式动态生成
haoteby 2025-09-05 23:34 4 浏览
制作 Excel 日历主要有两种思路:手动创建(简单灵活)和 使用公式动态生成(自动更新)。下面我将分别介绍两种方法,并提供详细步骤:
1
方法一:手动创建静态日历(适合简单需求或打印)
设置表头:在 A1 单元格输入年份(例如:2025)。
在 A2 单元格输入月份(例如:8)。
在 B3:G3 单元格区域依次输入星期几的缩写:星期日、星期一、星期二、星期三、星期四、星期五、星期六。(或者 Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
输入日期序列:确定该月的第一天是星期几(例如 2025 年 8 月 1 日是星期五)。
在对应星期几下方的单元格输入 1(例如星期五在F列,所以在F4单元格输入1)。
在F4右侧的G4单元格输入2。
在F4左侧的E4单元格输入31(代表 7 月 31 日,因为 8 月 1 日前一天是 7 月 31 日,且是星期四)。(如果需要纯当月日历,此处留空或填充背景色区分)
继续向左填写 30 (D4), 29 (C4), 28 (B4), 27 (A4 - 星期日)。
从F4的1开始,向右、向下依次填充日期:
G4 = 2
A5 = 3(下一行星期日)
B5 = 4
... 依此类推,直到填满该月的所有天数(8 月有 31 天)。
在8 月 31 日之后的下一个单元格(例如9 月 1 日应该是星期一B9),输入1。(如果需要纯当月日历,此处留空或填充背景色区分)
格式化:日期格式: 选中所有包含日期的单元格(例如A4:G9),按 Ctrl+1 打开“设置单元格格式”对话框。在“数字”选项卡中选择“自定义”,在类型框中输入 d (只显示天数)或 d 日 (显示“X 日”)。点击“确定”。
表头加粗居中: 选中星期表头(B3:G3),设置为加粗并居中。
周末高亮: 选中所有“星期日”所在的列(B 列)和“星期六”所在的列(G 列),设置一个背景色(如浅灰色)。
非本月日期: 选中不属于 8 月的日期(7 月 27-31 日和 9 月 1 日),设置字体颜色为浅灰色或设置不同的背景色。
网格线/边框: 为日期区域添加边框,使其看起来像表格。
调整行高列宽: 调整到合适的大小。
(可选)添加标题:在顶部合并单元格(例如A1:G1),输入 =A2 & "月 " & A1 & "年日历" 或直接输入 2025 年 8 月日历。
2
方法二:使用公式创建动态日历(推荐,自动更新)
这种方法利用 Excel 的日期函数,只需输入年份和月份,日历会自动生成并更新。
设置年份和月份输入位置:在 A1 单元格输入年份(例如:2025)。
在 A2 单元格输入月份(例如:8)。
计算该月第一天和最后一天:第一天: 在某个备用单元格(例如C1)输入公式计算该月 1 号的日期:=DATE(A1, A2, 1) (结果会显示为2025/8/1,格式问题后面处理)。
最后一天: 在另一个备用单元格(例如C2)输入公式计算该月最后一天的日期:=EOMONTH(C1, 0) (EOMONTH 函数返回指定日期之前或之后月份的最后一天。0 表示同月)。
设置星期表头:在 B4:H4 单元格区域依次输入:星期日、星期一、...、星期六。 (范围是B4:H4,共 7 列)
构建日历主体(核心公式):确定起始位置: 日历的第一天(1 号)需要放在它对应的星期几下面。我们利用该月 1 号的星期几来确定第一行从哪一列开始写日期。
在 第一个日期单元格(B5) 输入以下公式:=IF(MONTH($C$1)<>$A$2, "", IF(WEEKDAY($C$1, 2)>COLUMN(A1), "", IF(ROW(A1)=1, $C$1, IF(B4+1<=$C$2, B4+1, ""))))
公式解释(逐层拆解):
MONTH($C$1)<>$A$2:检查C1(该月 1 号)的月份是否不等于A2(输入月份)。理论上不会出现,可视为保护性判断。如果为真(月份不同),返回空字符串 ""(显示空白)。
WEEKDAY($C$1, 2)>COLUMN(A1):
WEEKDAY($C$1, 2):计算C1(该月 1 号)是星期几。参数 2表示星期一=1,星期二=2,...,星期日=7。
COLUMN(A1):当公式被向右拖动时,A1会变成B1, C1... 所以COLUMN(A1)返回 1,COLUMN(B1)返回 2,依此类推。
这个条件判断:如果 1 号是星期 X(数字表示),那么在第 1 行(ROW(A1)=1),只有从第 X 列开始的单元格才应该显示日期。它检查当前列号(由COLUMN(A1)动态获取)是否小于 1 号的星期数。如果小于,说明这个格子应该在 1 号之前,留空("")。
IF(ROW(A1)=1, $C$1, ...):如果当前是日历的第一行(ROW(A1)=1),则显示该月的第一天$C$1。
IF(B4+1<=$C$2, B4+1, ""):
如果当前不是第一行(即第 2 行及以下),则检查左侧相邻单元格(B4,注意公式在B5,B4是它正上方那个单元格)的值加 1(即下一天)是否小于或等于该月最后一天($C$2)。
如果是,则显示下一天(B4+1)。
如果不是(说明已经超过该月最后一天),则显示空字符串 ""。
关键技巧: 这个公式写在B5,但它会引用其上方的单元格B4。在真正填写日历之前,B4是星期表头(文本),B4+1会出错! 所以我们需要:
先在第一行(第 5 行)写公式: 在B5输入上面的公式。
暂时忽略错误: 输入后B5可能会显示错误(#VALUE!),因为B4是文本。不用管。
填充公式:
向右拖动B5的填充柄,一直拖到H5(覆盖星期日到星期六)。
同时选中B5:H5,向下拖动填充柄,拖足够多行(通常 6 行足够涵盖所有月份)。现在整个区域可能显示很多错误或空白。
修正第一天公式并填充:修改B5公式: 上面的公式在B5(日历主体区域的第一个单元格)还不能完美工作,因为它依赖B4(表头)。我们需要让B5能独立计算它是否该显示 1 号。
更新后的B5公式:=IF(MONTH($C$1)<>$A$2, "", IF(WEEKDAY($C$1, 2)>COLUMN(A1), "", $C$1))
这个简化版只处理第一行第一个可能显示日期的位置:
如果月份不匹配,显示空。
如果当前列号(COLUMN(A1))小于 1 号的星期数(WEEKDAY($C$1, 2)),显示空。
否则,显示该月第一天$C$1。
C5公式(第一行第二个单元格):=IF(MONTH($C$1)<>$A$2, "", IF(B5="", "", IF(B5+1<=$C$2, B5+1, "")))
如果月份不匹配,显示空。
如果左边的单元格(B5)是空的,说明还没到 1 号或者已经处理完了,那么我也显示空。
否则,如果左边的单元格(B5)的日期加 1 小于等于最后一天($C$2),就显示下一天(B5+1)。
否则(超过最后一天),显示空。
填充第一行:
在B5输入更新后的公式。
在C5输入上面的C5公式。
选中C5,向右拖动填充柄到H5。现在第一行(B5:H5)应该正确显示了从 1 号开始的日期(出现在正确的星期列下),之前不属于本月的列显示空白。
填充后续行:
在第二行第一个单元格(B6) 输入公式:=IF(MONTH($C$1)<>$A$2, "", IF(H5="", "", IF(H5+1<=$C$2, H5+1, "")))
解释:检查月份。如果上一行最后一个单元格(H5) 是空的(说明上一行结束或未开始),我显示空。否则,如果H5+1(即上一行星期六的下一天)小于等于最后一天,就显示H5+1(星期日)。否则显示空。
在第二行第二个单元格(C6) 输入公式:=IF(MONTH($C$1)<>$A$2, "", IF(B6="", "", IF(B6+1<=$C$2, B6+1, "")))
这和C5公式逻辑一样:如果左边(B6)有日期,就显示下一天。
填充第二行:
选中C6,向右拖动填充柄到H6。
填充整个区域:
选中第二行(B6:H6) 。
向下拖动填充柄,拖足够多行(5-6 行)。现在日历应该根据A1和A2的输入动态生成了!
格式化:日期格式: 选中整个日历主体区域(B5:H10 或你填充的区域),按 Ctrl+1 -> “数字” -> “自定义” -> 在“类型”框中输入 d (只显示天)或 d 日。点击“确定”。
隐藏错误值(可选): 如果仍有单元格显示#VALUE!(通常在不该显示日期的地方),可以用条件格式或IFERROR函数包裹公式使其显示空白。更简单的方法是确保公式逻辑覆盖所有情况(上面的
相关推荐
- 引爆朋友圈!我用npx一行命令“偷”光了微信热门文章
-
嘿,各位朋友们,大家好!怎么优雅地获取微信公众号的热门文章?你可能会说,这不就是爬虫吗?用Pythonrequests+BeautifulSoup,或者Node.jsaxios+che...
- Islands Architecture(孤岛架构)在携程新版首页的实践
-
一、项目背景2022,携程PC版首页终于迎来了首次改版,完成了用户体验与技术栈的全面升级。作为与用户连接的重要入口,旧版PC首页已经陪伴携程走过了22年,承担着重要使命的同时,也遇到了很多问题:...
- 开源的 Gitee+ 微信小程序,提供仓库浏览、检索等功能
-
总在用我们国产的码云Gitee代码托管平台,但该平台还没有一个我用着顺手的小程序,于是Gitee+就诞生了。界面截图:仓库地址请在Gitee上搜索“Gitee+”。准备工作在开发Gite...
- 首例iPhone 15 Pro电池鼓包事件出现 原因可能是过热
-
iPhone15Pro和iPhone15ProMax的过热问题早已传得沸沸扬扬,一些用户抱怨这两款旗舰机手感过热。不过,他们都没有遇到电池鼓包的问题,直到今天,一位Redditor...
- 一看就会一搭就废?分享7个亲测有效的穿搭“套路”
-
晚上好啊~最近写了不少穿搭稿,每次看评论经常能看到这样的留言:眼睛:我已经学会了~手:我有自己的想法。还有同学留言:一看就会,一搭就废。不奇怪!知易行难嘛。明明学了很多穿搭技巧,等到自己要穿的时候就忘...
- 十个网络安全小技巧 防止个人信息泄漏
-
随着社会的进步和发展,个人信息泄露事件层出不穷。当个人信息泄漏后,轻则会收到漫天飞舞的短信,重则可能造成经济损失。因此为了不影响正常的生活,需要时时刻刻警惕自己的信息不被泄露。那么如何才能有效地防止个...
- 2018国家网络安全宣传周系列动漫③丨如何防止电脑被偷窥?这几招教你逮住黑客
-
来源:光明网2018国家网络安全宣传周系列动漫③——个人电脑安全篇电脑已经成为人们日常重要的工具之一,但电脑安全防护意识却在大众心目中并不完善,再之,信息安全系统的不完善,很容易成为黑客的攻击目标。无...
- 「网络安全宣传周」送您一份安全上网指南
-
网络安全学习9月17日-24日是国家网络安全宣传周,今年的主题是“网络安全为人民,网络安全靠人民”。我们作为一名合格的好网民,要具备一定的网络安全知识和网络安全防护技能,更要注意提高网络安全意识,防范...
- 职场达人都在偷偷用的Excel神技:WEEKDAY函数让日期秒变星期几
-
你是不是经常需要查看某个日期对应星期几?还在手动翻日历?作为Excel函数专家,今天我要教你一个超实用的技巧——用WEEKDAY函数一键判断日期是周几!这个函数看似简单,但灵活运用能解决工作中的各...
- 制作 Excel 日历的两种思路:手动创建和 使用公式动态生成
-
制作Excel日历主要有两种思路:手动创建(简单灵活)和使用公式动态生成(自动更新)。下面我将分别介绍两种方法,并提供详细步骤:...
- Web OS 时代就在眼下,只是你还没注意到 App as a Browser 这个事实
-
这篇文章由36Kr新来的99(1999)后作者Link编译得来。文章作者LukeWroblewski是现任Google产品主管,他此前参与创立的Bagcheck和Polar...
- 如何在Form表单中添加WebBrowser控件,vba编程学习
-
vba编程中,如果需要显示某个网页的内容可以使用WebBrowser控件来实现。方法也比较容易,下面介绍一下如何在Form中添加WebBrowser控件。1、打开WindowsExcel,同时按A...
- DevExpress Demo示例展示:媲美Excel的电子表格控件
-
今天介绍一个很强大的电子表格(Spreadsheet)控件:DevExpressSpreadsheetforASP.NETMVC。它是一个仿ExcelUI的电子表格控件,可完全无障碍读写...
- Word,Excel,PPTOffice文件Web浏览器预览
-
前两天接到一个需求:需要在线预览用户上传的Word,Excel,PPT文档前端同事一听到这个需求,心里就开始骂了,什么鬼需求啊,浏览器怎么打开Word,Excel吗?这个要开发一个浏览器插件,这...
- web报表工具有什么好推荐_webi报表
-
接触数据分析,到深入参与企业数字化转型和数据行业建议,已将近8年多,对数据分析、报表工具还是有些个人经验。我从个人的经验角度,和大家说说我用过哪些web报表工具。首先是开源的web报表:BIRTPr...