求优化:计算指定月份第N个/最后一个指定工作日的Excel公式
计算指定年月的第N个/首尾指定工作日的Excel实现
单元格配置
- 单元格B3:下拉选项为
First、Second、Third、Fourth、Last(用于选择目标是第1/2/3/4个或最后一个指定工作日) - 单元格C3:下拉选项为
Sunday、Monday、Tuesday、Wednesday、Thursday、Friday、Saturday(指定目标工作日类型) - 单元格A6:输入4位整数年份
- 单元格B6:输入整数月份
现有公式实现
辅助单元格公式
- 单元格B2(将选择的文本序号转为数字):
=IF(B3="First",1,IF(B3="Second",2,IF(B3="Third",3,IF(B3="Fourth",4,5)))) - 单元格C2(映射工作日为WEEKDAY函数的参数值):
注:映射规则为11(Tuesday)、12(Wednesday)、13(Thursday)、14(Friday)、15(Saturday)、16(Sunday)、17(Monday)=IF(C3="Sunday",16,IF(C3="Monday",17,IF(C3="Tuesday",11,IF(C3="Wednesday",12,IF(C3="Thursday",13,IF(C3="Friday",14,15))))))
核心计算单元格(C6,输出目标日期)
=IF(B2<5,DATE(A6,B6,B2*7+1)-WEEKDAY(DATE(A6,B6,B2*7-1),C2),EOMONTH(DATE(A6,B6,1),0)-MOD(WEEKDAY(EOMONTH(DATE(A6,B6,1),0)+5,C2),7))
当月首尾日期计算
=DATE(A6,B6,1) // 计算当月第一天 =EOMONTH(DATE(A6,B6,1),0) // 计算当月最后一天
求优说明
目前已实现需求,但希望得到更简洁高效的优化方案,欢迎提供改进思路。
内容的提问来源于stack exchange,提问作者Mark Main
相关产品推荐
相关产品推荐

