如何在电子表格中实现输入月份及日期自动填充工作日数据?
电子表格工作日自动计算实现方案
一、自动计算指定月份的总工作日数(周一至周五)
方法1:直接用内置函数(无需额外数据源)
假设你在A1单元格(红圈位置)输入目标月份(格式如2024/5或5/2024),在B1单元格(黄圈位置)输入以下公式即可自动计算:
- Excel/Google Sheets通用公式:
公式说明:=NETWORKDAYS.INTL(EOMONTH(A1,-1)+1,EOMONTH(A1,0),1)EOMONTH(A1,-1)+1:生成当月第一天的日期EOMONTH(A1,0):生成当月最后一天的日期- 第三个参数
1:指定周一至周五为工作日(需自定义工作日可调整该参数)
方法2:借助日历数据源实现(适用于需可视化日期列表的场景)
如果必须使用日历数据源,以Excel的Power Query为例:
- 点击「数据」选项卡 → 「获取数据」→ 「自其他来源」→ 「自空白查询」
- 在公式栏输入以下代码(关联A1单元格的月份值):
此代码会生成当月所有日期的列表= List.Dates(Date.StartOfMonth(Sheet1!$A$1), Date.DaysInMonth(Sheet1!$A$1), #duration(1,0,0,0)) - 切换到「转换」选项卡 → 添加自定义列,输入公式标记工作日:
(返回= Date.DayOfWeek([Date], Day.Monday) < 5True代表是周一至周五的工作日) - 点击「开始」选项卡 → 「关闭并上载至」,将结果加载到新工作表;再用
COUNTIF函数统计True的数量,关联到黄圈单元格即可
二、自动计算截至指定日期的已过工作日数
方法1:内置函数快速实现
假设你在C1单元格(绿圈位置)输入前一个工作日的日期,在D1单元格(蓝圈位置)输入公式:
- Excel/Google Sheets通用公式:
公式会自动统计当月第一天到指定日期之间的工作日总数=NETWORKDAYS.INTL(EOMONTH(A1,-1)+1,C1,1)
方法2:基于日历数据源的动态统计
延续上面Power Query的日历数据源:
- 编辑已创建的查询,添加「筛选行」步骤,筛选日期≤C1单元格的数值
- 统计筛选后工作日标记为
True的行数,设置查询的「刷新频率」为「当单元格值变化时刷新」,即可实现输入日期后自动更新已过工作日数
关于Date Picker的问题排查
之前使用Date Picker失败,大概率是控件未正确关联目标单元格:
- Excel中:点击「开发工具」选项卡 → 「插入」→ 选择「日期选取器(ActiveX控件)」,右键控件 → 「属性」,将
LinkedCell设置为A1(月份输入框)或C1(前工作日输入框),选择日期后单元格值会自动同步 - Google Sheets中:插入「日期」类型的单元格数据验证,即可点击单元格弹出日期选择器,无需额外控件
内容的提问来源于stack exchange,提问作者Chris Lovell
相关产品推荐
相关产品推荐

