我之前写过如何制作一个简单的日历
今天做了一个升级版,如下图:
通过控制自动切换日历中的月份、日期、农历、下班状态!
是不是特别酷呢?
接下来,我将揭开这个日历的层层面纱。
公众号后台回复:呵呵,你可以获取这个日历的源文件。 (PS.这个日历是2024年的,相信看完这篇文章你也可以制作2023年的日历)
看看
首先我们需要制作日历表的外观。 日历表中,每个格子三行两列,共6行7列。
单元格 E3 为 2024,对应的数字格式为年份 0。
单元格E4为1,对应的数字格式为月份0。
▋插入控件
在【开发工具】选项卡下,点击【插入】-【数值调节旋钮】。
右键单击该控件并选择[设置控件格式]。
在设置对象窗口中,最小值为1,最大值为12,单元格链接为F4。 (月份为1-12,因此最小值为1,最大值为12)
附言。 如果没有【开发工具】选项卡,请在【文件】-【选项】-【自定义功能区】中调出。
创建基本外观后,下一步就是编写公式。
写一个公式
如下图所示,在单元格E7中输入以下公式:
=日期($E$3,$F$4,1)-(日期($E$3,$F$4,1),2)+INT((A:A)/2)+INT((ROW(1:1) )-1)/3)*7
▲ 左右滑动查看
如下图所示,在F7单元格中输入以下公式:
=IF(MONTH(E7)=$F$4,((E7,参数列表!$A:$D,4,0),""),"")
▲ 左右滑动查看
如下图所示,在单元格E8中输入以下公式:
=IF(MONTH(E7)=$F$4,((E7,参数列表!$A:$D,3,0),""),"")
▲ 左右滑动查看
填写最后的公式即可~
如图动画所示,选择E7:F9,从右往下填写公式。
小提示:
E7细胞功能公式:
=日期($E$3,$F$4,1)-(日期($E$3,$F$4,1),2)+INT((A:A)/2)+INT((ROW(1:1) )-1)/3)*7
▲ 左右滑动查看
公式的前半部分是求:
当月 1 号之前的星期日的日期。
=日期($E$3,$F$4,1)-(日期($E$3,$F$4,1),2)
▲ 左右滑动查看
后半部分要求:
当月 1 日之前的星期日,即根据公式前半部分得出的日期。
需要添加多少个间隔才能获取当前单元格的日期。
=INT((A:A)/2)+INT((行(1:1)-1)/3)*7
▲ 左右滑动查看
例如,2024 年 1 月 1 日是当月 1 号之前的星期日(2024 年 12 月 26 日)+ 6。
F7细胞功能公式:
=IF(MONTH(E7)=$F$4,((E7,参数列表!$A:$D,4,0),""),"")
▲ 左右滑动查看
如下图所示,如果左边的日期是本月的日期,则使用该函数查找对应日期对应的下班状态,否则显示为空。
E8细胞功能公式:
=IF(MONTH(E7)=$F$4,((E7,参数列表!$A:$D,3,0),""),"")
▲ 左右滑动查看
如果上面的日期是本月的日期,则使用该函数查找对应日期的对应日期,否则将显示为空。
设定好公式后,接下来就是“装饰”日历了~
格式
▋设置下班状态格式
❶ 不显示0
填写完公式后,我们发现状态单元格中有很多0,影响了表格的美观,所以我们不应该显示这些0。
这个怎么做? 我们可以使用自定义数字格式。
按住【Ctrl】键,选择需要设置的单元格区域,然后按住快捷键【Ctrl+1】,弹出【设置单元格格式】对话框。
然后在类型中输入;;;@并点击【确定】按钮。 此时除文字外全部0显示为空白。
小提示:
数字格式中,正数格式; 负数格式; 零值格式; 文本格式。
;;;@实际上表示不显示值,而是显示文本本身。 @符号代表文本本身的字符。
❷ 设置下班颜色
将“假期”一词显示为红色,将“课程”一词显示为蓝色。 这里我们可以使用条件格式。
在[主页]选项卡上,单击[条件格式]并选择新建规则。
注:活动单元格为F7,就是下图左边红框的位置(活动单元格是指Excel表格中的活动单元格,可以是正在编辑的单元格,也可以是选中范围内的单元格) 。
选择【使用公式确定要格式化的单元格】,输入=F7="Hugh",将格式设置为红色粗体字体,然后确认。
此时,单元格中的“休”字样以红色粗体显示。
同理,输入=F7="Class",将格式设置为蓝色粗体,然后确认。
此时,单元格中的“class”字样以蓝色粗体显示。
▋不显示当前月份以外的日期
如下图所示,我们可以看到不在同一月份的日期仍然显示出来,这显然不是我们想要的。
按住【Ctrl】键,选择指定区域,点击【条件格式】-【新建规则】。
选择[使用公式确定要格式化的单元格]并输入:
=月(E7)$F$4
将格式中的字体设置为白色,然后单击[确定]按钮。
至此,我们想要的效果就完成了。 如果我们想让它更漂亮,我们可以合并农历单元格(例如Q8:R8等)。
延伸和扩展
你认为这就是结局吗? 当然还没有。
由于不同的人有不同的假期和轮班安排,我们可以在参数表中相应的位置选择相应的状态,日历表可以自动更新。
对于特殊的日子,我们也可以将它们输入到参数表中。 例如,如果某一天是您的生日,日历将自动更新。
我们还可以在日历下面添加注释,如下图所示,然后直接打印。
案例中的日历都是使用主题色的,所以我们也可以通过改变主题色来将其变成其他的东西!
最后总结一下:
本文介绍了一种更高级的日历方法,包括带有农历的日历加上下班状态和自动公式更新。
❶ 创建日历外观
确定日历所需的行数和列数,并根据您的需要创建良好的外观。
❷ 设定公式
确定日期编号:使用当月 1 日之前的星期日编号来定位日期的第一个单元格。
下班状态搜索:使用功能进行搜索。
农历查找:利用函数进行查找。
❸ 格式
对于下班状态下出现的0值,我们可以使用数字格式来隐藏0值。 在本文中,我们使用;;;@
使用条件格式隐藏不属于当前月份的日期。
❹ 简单的扩展
由于本文中的日历是使用公式制作的,因此更加灵活。 我们可以根据自己的需要DIY制作属于自己的日历。
当然,日历的玩法不仅仅限于这些。 你可以发挥你的想象力,制作出更多有趣的日历! !
还想掌握更多Excel技巧并解决工作和生活中的问题吗?
恰逢其时,我们专门为专业人士准备的“秋野Excel 3天训练营”。 全部根据职场真实桌面案例设计,还有很多超实用的Excel技能教学。
每天学习30分钟左右,从日常功能开始,全程演示,一节课练习,巩固每一步进步。
Akiye Excel 3天训练营
每天学习30分钟
你也可以成为Excel高手!
扫描二维码立即报名!
▲ 注册成功后,会自动弹出班主任二维码。 不要提前退出。
在公众号后台回复呼呼,即可带走这份日历~
遇到有价值的文章
不要放开它!
动动你的小手