Excel如何使用公式列出指定月份日期并排除周五和周六
可以实现,分两个版本的公式供你选择:
方案1:适用于Excel 365/2021及以上版本
用SEQUENCE+FILTER组合,逻辑简洁,不需要额外处理空值和日期合法性,自动适配大小月、闰月:
=LET( 月份起始, EOMONTH(A1,-1)+1, 当月总天数, DAY(EOMONTH(A1,0)), 当月全部日期, SEQUENCE(当月总天数,,月份起始), 过滤后日期, FILTER(当月全部日期, WEEKDAY(当月全部日期,2)<6), TRANSPOSE(过滤后日期) )
WEEKDAY(日期,2)规则为周一返回1、周五返回5、周六返回6、周日返回7,筛选<6即可直接排除周五、周六- 若需要单行精简写法可使用:
=TRANSPOSE(FILTER(SEQUENCE(DAY(EOMONTH(A1,0)),,EOMONTH(A1,-1)+1),WEEKDAY(SEQUENCE(DAY(EOMONTH(A1,0)),,EOMONTH(A1,-1)+1),2)<6))
方案2:适用于旧版本Excel(无FILTER/LET函数)
基于你原有公式逻辑调整,需使用数组公式操作:
- 提前选中足够容纳结果的横向单元格区域(单月工作日最多23天左右,选25个单元格即可)
- 输入以下公式,按
Ctrl+Shift+Enter确认数组公式生效
=IFERROR(INDEX(IFERROR(DATEVALUE(DAY(ROW($1:$31))&"-"&MONTH($A$1)&"-"&YEAR($A$1)),""),SMALL(IF(WEEKDAY(IFERROR(DATEVALUE(DAY(ROW($1:$31))&"-"&MONTH($A$1)&"-"&YEAR($A$1)),""),2)<6,ROW($1:$31),""),COLUMN(A1))),"")
- 此处
ROW($1:$31)相比你原有公式的ROW(1:30),可适配31天月份的日期生成 - 超出实际结果数量的单元格会自动显示为空
内容的提问来源于stack exchange,提问作者YasserKhalil
相关产品推荐
相关产品推荐

