丹(Dan)正在建立一个工作表供他的公司使用,并需要一种方法来计算http://calendarcorner.net/[calendar]月的第一个工作日。他知道如何计算一个月的第一天,但​​这一天可能会落在周末或假日。

计算给定月份的第一个工作日的最简单方法是使用WORKDAY函数,方法是:

=WORKDAY(EOMONTH(A1,-1), 1)

此公式可找到单元格A1中任何日期的月份的第一个工作日。 EOMONTH函数返回单元格A1中日期之前一个月的最后一天,然后WORKDAY函数返回下个月的第一个工作日。

因为WORKDAY有点古怪,所以将函数这样组合在一起(使用EOMONTH);它假定第一个参数是有效的工作日。

这意味着它不会检查参数中使用的日期是否在周一至周五的工作周内。通过将参数强制为要确定第一个工作日的月份的前一天并将第二个参数设置为1,该函数将返回所需月份的第一个实际工作日。

WORKDAY函数还使您可以有选择地指定应考虑假期。最简单的方法是在单元格区域中设置假日日期列表,然后命名该范围。 (在_ExcelTips_的其他问题中讨论了如何命名范围。)如果给范围命名,例如MyHolidays,则可以使用以下版本的公式:

=WORKDAY(EOMONTH(A1,-1), 1, MyHolidays)

如果您要计算一年中任何给定月份的开始工作日,这是一个巧妙的技巧。假定单元格A1包含年份,例如2020,并且单元格A2包含月份数字1到12,代表您想要开始工作日的月份。然后,您可以使用以下公式获得所需的日期:

=WORKDAY(DATE(A1,A2,0), 1, MyHolidays)

在此公式中使用DATE函数的方式返回在单元格A2和A1中指定的月份和年份之前的月份的最后一天。

然后,WORKDAY(1)的第二个参数前进到下一个工作日。 MyHolidays(和以前一样)说明该月可能发生的任何假期。

WORKDAY函数对于在美国境内的日期来说效果很好,但是如果您需要在其他国家/地区工作,则它会变得有点麻烦。在这种情况下,请尝试使用WORKDAY.INTL函数(从Excel 2010开始引入),看看它是否可以为您解决问题。它在允许指定周末和节假日方面更加灵活。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(10201)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: