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

Posted

技术标签:

【中文标题】如何在日期中添加天数,仅考虑工作日(即忽略周末)?【英文标题】:How to add number of days to a date, consider only business days (i.e. ignore weekends)? 【发布时间】:2012-06-10 22:44:05 【问题描述】:

我正在尝试创建一个公式来计算 n-th 营业日期(只有星期一到星期五是营业日)。 为简单起见,假期并不重要。只应忽略周末。

例如:

   +------------------------------------------------------------------
   |   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 上)

【问题讨论】:

查找是您最好的解决方案,因为它可以轻松应对假期,它简单且易于扩展。公式将是正确的 PIA。 【参考方案1】:

在 Excel WORKDAY 函数中执行此操作,例如C2中的这个公式

=WORKDAY(A2,B2)

您还可以添加假期范围,例如 H2:H10 中列出的假期

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

WORKDAY 是 Excel 2007 及更高版本中的内置函数 - 在早期版本中您需要启用Analysis ToolPak addin

【讨论】:

它似乎适用于整数,但如果我的持续时间包含一天的一半和其他部分怎么办?【参考方案2】:

在 LibreOffice Calc 中:

C1=A1+INT(B1/5)*7+MOD(B1,5)+(IF(WEEKDAY(A1,2)+MOD(B1,5)>5,2,0))

【讨论】:

以上是关于如何在日期中添加天数,仅考虑工作日(即忽略周末)?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 moment.js 添加天数,不包括周末?

从日期计算中排除周末和自定义日期(即假期)

oracle中怎么得到日期相减除去周末后的天数

如何查找两天之间的数据但不包括周末的数据

oracle怎么计算两个日期之间去除周末的天数?

在 Hive 中获取最后一个工作日的第 15 个日期-yyyyMMdd(仅周末除外)