不同的公司处理工作量的方式不同。一些公司与常规的http://calendarcorner.net/[calendar]绑定在一起,“工作月”从该月的第一个工作日开始到最后一个工作日结束。其他公司会调整每月开始和结束日期,以满足会计或其他目的的特定需求。

您可能需要弄清一个月的特定截止日期。通过使用Excel的Analysis ToolPak中的几个功能,可以快速完成此任务。

要使用的主要功能是WORKDAY函数。此功能使您可以确定开始日期之前或之后的特定工作日。例如,如果您需要了解今天前三天的工作日,则可以按以下方式使用该功能:

=WORKDAY(TODAY(),-3)

WORKDAY的第一个参数是TODAY函数,该函数提供今天的日期。第二个参数表示您想要今天之前或之后的几天。请记住,WORKDAY仅返回星期一至星期五的实际工作日。 (嗯,它返回那些工作日的日期。这与WEEKDAY函数不同,该函数在一周中的某天返回0到7。)在这种情况下,如果今天是星期二,那么在星期二之前的三个工作日是星期四,并且WORKDAY返回该星期四的日期。

您需要使用的下一个函数是EOMONTH,它返回特定日期之前或之后给定月数的月末日期。要查找当前月份的结束时间,可以按以下方式使用该函数:

=EOMONTH(TODAY(),0)

EOMONTH的第一个参数是TODAY函数,该函数再次提供今天的日期。第二个参数表示要在该日期之前或之后多少个月。由于参数为0,因此EOMONTH的这种用法返回当前月份的最后一天。

如果将WORKDAY和EOMONTH结合使用,则可以通过以下方式确定当月月底之前的第三个工作日:

=WORKDAY(EOMONTH(TODAY(),0),-3)

如果您想找出另一个月底之前的第三个工作日,只需将TODAY函数替换为所需月份中的日期即可。例如,如果单元格C2包含一个日期,并且您想知道该日期的月底之前的第三个工作日,则可以使用以下命令:

=WORKDAY(EOMONTH(C2,0),-3)

应当注意,该公式实际上返回该月最后一天之前的第三个工作日,而不是该月最后一个工作日之前的第三个工作日。当然,这在处理周六或周日结束的月份时会起作用。如果一个月在星期六或星期日结束,则该函数返回该日期之前的三个工作日,也就是星期三。但是,如果您想在最后一个工作日(星期五)之前三天约会,那么您实际上要的是星期二,而不是星期三。

在这种情况下,公式变得更加复杂,因为现在您需要检查月的实际结束时间是星期六还是星期日。

再次假设您将所有内容都基于C2中的日期,则可以使用以下公式:

=IF(OR(WEEKDAY(EOMONTH(C2,0))=1,WEEKDAY(EOMONTH(C2,0))=7), WORKDAY(WORKDAY(EOMONTH(C2,0),-1),-3), WORKDAY(EOMONTH(C2,0),-3))

如果C2中的月末是星期六(7)或星期日(1),则该公式将计算前一天(星期五)的工作日,然后计算该日期之前三天的工作日。否则,将使用计算第三个先前工作日的常规公式。

如果您想让公式更加适应,请记住WORKDAY也可以补偿一系列假期。允许放假的最简单方法是将一组放假的日期放入指定的范围内(例如“假期”),然后向WORKDAY函数添加第三个参数,如下所示:

=WORKDAY(EOMONTH(C2,0),-3,Holidays)

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

本技巧(3287)适用于Microsoft Excel 97、2000、2002和2003。可以在Excel的功能区界面(Excel 2007及更高版本)中找到本技巧的版本: