Google表格公式,用于计算具有不同开始/结束日期,重叠和间隔的任务的实际总持续时间

问题描述 投票:2回答:1

我知道我如何使用自定义函数/脚本来执行此操作,但是我想知道是否可以使用内置公式来完成此操作。

我有一个任务列表,其中包含开始日期和结束日期。我想计算在所有任务上花费的实际工作日数(NETWORKDAYS)。

  • 任务日可能会重叠,所以我不能只计算每个任务花费的天数
  • 任务之间可能会有间隙,所以我不能仅仅找到开始和结束之间的差异。

例如,使用这些:

| Task Name | Start Date | End Date   | NETWORKDAYS |
|:---------:|------------|------------|:-----------:|
|     A     | 2019-09-02 | 2019-09-04 |      3      |
|     B     | 2019-09-03 | 2019-09-09 |      5      |
|     C     | 2019-09-12 | 2019-09-13 |      2      |
|     D     | 2019-09-16 | 2019-09-17 |      2      |
|     E     | 2019-09-19 | 2019-09-23 |      3      |

这里是视觉上的:

enter image description here

现在:

  • 如果总计NETWORKDAYS,您将获得15
  • [如果您在2019-09-02和2019-09-23之间计算出NETWORKDAYS,您将获得16]

但是实际持续时间是13:

  • A和B有点重叠
  • B和C之间有空隙
  • D和E之间有空隙

如果我要编写一个自定义函数,则我基本上会采用所有日期,对它们进行排序,找到重叠的部分并删除它们,并考​​虑差距。

但是我想知道是否有一种方法可以使用内置公式来计算实际持续时间?

google-sheets google-sheets-formula
1个回答
0
投票

确定,为什么不这样做:

=ARRAYFORMULA(COUNTA(IFERROR(QUERY(UNIQUE(TRANSPOSE(SPLIT(CONCATENATE("×"&
 SPLIT(REPT(INDIRECT("B1:B"&COUNTA(B1:B))&"×", 
 NETWORKDAYS(INDIRECT("B1:B"&COUNTA(B1:B)), INDIRECT("C1:C"&COUNTA(B1:B)))), "×")+
 TRANSPOSE(ROW(INDIRECT("A1:A"&MAX(NETWORKDAYS(B1:B, C1:C))))-1)), "×"))), 
 "where Col1>4000", 0))))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.