可在WPS表格中用公式构建动态日历:先在B1、B2设年份月份,D1用=WEEKDAY(DATE(B1,B2,1),2)算首日星期,F4用=DATE($B$1,$B$2,1)-$D$1+1生成起始日期,向右向下填充35格,再用条件格式=MONTH(F4)<>$B$2隐藏非当月日期,最后加周一至周日表头并冻结窗格。

如果您希望在WPS表格中快速生成一个可随年份和月份自动更新的日历,避免手动输入日期和星期,可通过公式与单元格引用构建动态日历。以下是实现该功能的具体步骤:
一、设置年份与月份输入单元格
通过预留两个独立单元格分别输入年份和月份,作为整个日历的驱动参数,后续所有日期计算均基于这两个值进行推导,确保日历具备可变性与复用性。
1、在工作表左上角(例如A1单元格)输入文字“年份”,在B1单元格输入具体年份数字,如2024。
2、在A2单元格输入文字“月份”,在B2单元格输入月份数字,如10(代表十月)。
3、选中B1和B2单元格,右键设置单元格格式为“数值”,小数位数设为0,防止意外出现小数点。
二、计算当月1日对应的星期几
利用DATE函数生成指定年月的第一天,并结合WEEKDAY函数获取其在一周中的位置(以星期日为1),从而确定日历首行应从周几开始填充,这是对齐星期列的关键依据。
1、在D1单元格输入公式:=WEEKDAY(DATE(B1,B2,1),2)。
2、该公式返回值范围为1(星期一)至7(星期日),与日历表头“周一至周日”严格对应。
3、确认D1显示结果为数字,若显示为日期格式,需右键单元格→设置单元格格式→选择“常规”或“数值”。
三、生成35个连续日期单元格区域
日历需覆盖最多6周×7天=42天,但标准排布常采用35格(5周)或42格;此处采用35格布局(从第一周周一到第五周周日),通过起始日偏移+序列递增方式填入有效日期及空值。
1、在F4单元格输入公式:=DATE($B$1,$B$2,1)-$D$1+1。
2、选中F4单元格,将填充柄向右拖动至L4,完成第一行7个单元格的填充。
3、选中F4:L4区域,再向下拖动填充至F9:L9,共6行,形成35个单元格的矩形区域。
4、所有单元格将自动显示连续日期,其中非当月日期会正常呈现,无需额外隐藏。
四、应用条件格式高亮当月日期
为提升可读性,需区分显示当月日期与前后月份日期,通过条件格式将不属于目标年月的日期设为浅灰色或空白,仅保留当月数据醒目可见。
1、选中F4:L9全部单元格区域。
2、点击“开始”选项卡→“条件格式”→“新建规则”→“使用公式确定要设置格式的单元格”。
3、在公式框中输入:=MONTH(F4)$B$2。
4、点击“格式”按钮,在字体选项中将颜色设为灰色(如RGB 150,150,150),确定后应用。
五、添加星期表头并冻结窗格
在日历上方插入“周一至周日”表头,使结构符合阅读习惯;同时冻结首行与左侧行列,便于滚动查看大日历时保持标题与参数可见。
1、在F3单元格输入周一,G3输入周二,依此类推至L3输入周日。
2、选中第3行和第4行之间的横线(即第4行行号上方),右键→“插入行”,将表头单独置于第3行。
3、选中D4单元格(即年份单元格左下方交汇点),点击“视图”→“冻结窗格”→“冻结拆分窗格”。










