如何在日期上添加若干天,仅考虑工作日(即忽略周末)?

21
我试图创建一个公式来计算第n个工作日,只有星期一到星期五是工作日。 为了简单起见,假定不考虑节假日,只忽略周末。
例如:
   +------------------------------------------------------------------
   |   A                B                     C
   +------------------------------------------------------------------
1  |  Starting Date    Business-Day Number   Business Date
2  |  06-Jun-2012      0                     06-Jun-2012
3  |  06-Jun-2012      1                     07-Jun-2012
4  |  06-Jun-2012      2                     08-Jun-2012
5  |  06-Jun-2012      3                     11-Jun-2012    <-- June 9th (Sat) and 10th (Sun) are skipped
6  |  06-Jun-2012      4                     12-Jun-2012
...

这个公式将用于填充C列。我能想到的唯一解决方案是在一个工作日表上使用vlookup函数,但我觉得这有些繁琐。

有什么办法可以用一个公式完成这个任务吗?

(可以使用Excel或OpenOffice-Calc)


Lookup是您最好的解决方案,因为它可以轻松处理假期,而且简单易扩展。使用公式会很麻烦。 - Tony Hopkinson
2个回答

41

在Excel中,WORKDAY函数可以实现这一功能。例如,在C2中使用以下公式

=WORKDAY(A2,B2)

你还可以添加一个假期范围,比如在H2:H10中列出的假期:

=WORKDAY(A2,B2,H$2:H$10)

WORKDAY是Excel 2007及以上版本的内置函数,而在较早的版本中则需要启用分析工具包插件。


它似乎对整数运行良好,但如果我的持续时间包含半天和其他分数怎么办? - mazaneicha
这也适用于Libreoffice(至少在LO 7上) - Joril

4
在LibreOffice Calc中:
C1=A1+INT(B1/5)*7+MOD(B1,5)+(IF(WEEKDAY(A1,2)+MOD(B1,5)>5,2,0))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接