制作个日历,Excel或WPS表格,究竟哪个好?
- 2026-11-09 00:48:13
制作个日历,Excel或WPS表格,究竟哪个好?偶然拜读一篇稿子,说到可以利用SEQUENCE函数来生成日历,就顺势操作了一把。SEQUENCE函数的核心作用是生成一组数字的序列,那生成日历应该有几行几列?最初我也以为是5行7列(一周七天),但实际查看完后,就不是,而是6行7列。因为有的月份月初的时候跨周末的两三天算一周(一行),月末的时候又来一样的,跨一到两天的周初,这样算下来,必须有6周才能保证所有月份的每一周都排在一张日历上。 首先在第一行,A1、C1、E1和G1分别输入公历、年、月、日,点击工作表的左下角加号“+”,新建一个工作表,命名为参数表,在A、B、C三列分别输入年份、月份和日期的范围,如下图。 
现在回到Sheet1工作表,在B1、D1和F1中,分别设置数据有效性,序列的范围,分别对应刚才的参数表中的年、月和日,如下图。 
先在J1输入=SEQUENCE(1,7,DATE(B1,D1,1)),结果如下。 
按Ctrl+1,设置单元格格式,分别选数字-日期-星期,确定后,变成一周的形式,但这里不是从周一开始的。 
下一步是难点,把公式改为:=DATE(B1,D1,1)-WEEKDAY(DATE(B1,D1,1),2)。这是属于拿来主义者的,我在读一篇稿子时,看到这个公式,不明白什么意思,就问了灵犀。 

主要意思就是说,通过这样一种公式构造,就能实现周日排在最左边的效果,尽管有可能周一那天不属于本月。 
然后,将这个公式+1,当然就是星期一了,再将它作为SEQUENCE函数的第3参数,写成=SEQUENCE(1,7,星期一,1),生成1行7列的数组,其中以星期一为起始,增量为1,当然“星期一”要改成:DATE(B1,D1,1)-WEEKDAY(DATE(B1,D1,1),2)+1,就得到日历的上半部分了。 
接下来,如何生成日期下半部分的6行区呢?其实,根据SEQUENCE的特点已经想到了,在J2输入=SEQUENCE(6,7,DATE(B1,D1,1)-WEEKDAY(DATE(B1,D1,1),2)+1,1),单元格格式设置为日期:3月7日,确定。如图。 
初步成形了,但是这个太丑,只显示日期就可以。现成的单元格格式 设置没有这一项,我们想到要用函数实现。 
哪一个呢,能改变显示方式的莫过TEXT,文本万能显示高手,其中,日期只显示成日期值,不要年和月,只要在格式中告诉它"D"就行。如下图。 
到这一步,将星期那一行和以下的6行,用VSTACK拼起来。为了不用设置星期的格式,也用TEXT函数处理一下,显示星期的时候格式用的是"AAAA"。最后形成的公式为:=VSTACK(TEXT(SEQUENCE(1,7,DATE(B1,D1,1)-WEEKDAY(DATE(B1,D1,1),2)+1,1),"AAAA"),TEXT(SEQUENCE(6,7,DATE(B1,D1,1)-WEEKDAY(DATE(B1,D1,1),2)+1,1),"D"))。在A3单元格输入后,如下图。 
最后,还要美化一下。1是给星期行填充色,2是给各行采用交替色形成反差,增加视觉效果,3是给非本月的日期填充一种淡背景色同时将字体色也改暗些,4是突出当天的颜色。其中3和4是通过条件格式来实现的。具体说一下突出当天颜色是如何实现的:选中A4:G9,条件格式,新建规则,输入公式,在公式编辑框中输入:=A4:G9*1=DAY(TODAY()),再点格式,选择一种明显的颜色,如红色。解析:A4:G9现在经TEXT处理后以文本方式显示,因此A4:G9*1再变回到数值,让这个数值与DAY(TODAY())相比,如A8显示为27(文本型),经处理后变27(数值型),与DAY(TODAY())生成的值比对,在6月27日这一天,DAY(TODAY())的值为27,因此相等,这时触发条件,就显示为红色。当条件不满足时,就显示原先设置格式的颜色。这样在不同日期打开这个日历工作表,总能在当天的日期上显示红色。 
为了避免出现错误问题,如2月29日或4月31日等并不存在的日期,在第一行的日期右侧,设置了一个检验日期是否合法的功能。在I1输入:=IF(ISNUMBER(CONCAT(B1:G1)*1),"正常","错误")。解析:让B1到G1合并,变成一串真实的日期,如果存在则*1后是数值,用ISNUMBER判断,结果为TRUE就正常,如果不存在那一天的日期,显示FALSE就错误。同时用条件格式输入公式的方式显示不同字体和颜色,让效果更醒目一些,如图。 


至此,全部操作已经完成。效果如下。 
文末,留个2个问题请思考,欢迎在留言区交流: 1、如何实现:用条件格式给非本月的日期填充一种淡背景色,同时将字体色也改暗些,与当月日期区分? 2、如何让当天的公历日期生成对应的中国农历日期? 


















本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。