Excel按月初日期筛选数据及修改公式获取每月首个工作日咨询
问题1:筛选Excel中每月第一天的数据
这里有两种简单易行的方法,你可以根据自己的Excel版本和习惯选择:
方法1:用自带筛选功能快速搞定
- 选中A列的表头单元格(即标注日期的单元格)
- 点击顶部菜单栏的「数据」→「筛选」,此时表头会出现一个筛选箭头
- 点击箭头,选择「日期筛选」,在子菜单里找「第一天」(不同版本可能放在「期间」分类下);如果没找到,就选「自定义筛选」,在对话框里选「等于」,输入「每月1日」即可。
方法2:辅助列标记后筛选
如果你的Excel版本没有直接的日期筛选选项,就添加一个辅助列(比如B列):
在B2单元格输入公式:=DAY(A2)=1下拉填充到所有行,公式会返回
TRUE(是当月第一天)或FALSE(不是)。之后给B列添加筛选,只勾选TRUE,就能筛选出所有每月第一天的数据。
问题2:修改公式判断每月第一个工作日
先拆解下你提供的原公式逻辑——它判断当月最后一个工作日的思路是:
AND(WEEKDAY(A2,2)<6, MONTH(WORKDAY(A2,1))<>MONTH(A2))
WEEKDAY(A2,2)<6:确保A2是周一到周五的工作日(参数2让周一=1,周五=5)MONTH(WORKDAY(A2,1))<>MONTH(A2):A2的下一个工作日已经属于下个月,说明A2是当月最后一个工作日
要判断当月第一个工作日,咱们可以顺着这个逻辑反向推导,或者换个更直观的写法,给你两种方案:
方案1:基于原公式的反向逻辑
把原公式里的「下一个工作日」改成「前一个工作日」,判断A2的前一个工作日属于上个月,同时A2本身是工作日:
=AND(WEEKDAY(A2,2)<6, MONTH(WORKDAY(A2,-1))<>MONTH(A2))
这个公式的逻辑是:A2是工作日,且它的前一个工作日已经是上个月的日期,那A2必然是当月的第一个工作日。
方案2:直接匹配当月第一个工作日
另一种更直白的写法,先计算出当月的第一个工作日,再判断A2是否等于这个日期:
=A2=WORKDAY(EOMONTH(A2,-1),1)
解释下每个部分:
EOMONTH(A2,-1):计算A2所在月份的上一个月最后一天WORKDAY(...,1):以上月最后一天为起点,往后推1个工作日(自动跳过周末),得到当月的第一个工作日- 整个公式判断A2是否等于这个计算出的日期,是则返回
TRUE,否则返回FALSE
如果需要考虑法定节假日,只需在WORKDAY函数里添加第三个参数即可,比如WORKDAY(EOMONTH(A2,-1),1,$C$2:$C$10),其中C2:C10是你存储节假日日期的单元格区域。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

