Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 查找多个重叠时间的总持续时间_Google Sheets_Formula_Overlap - Fatal编程技术网

Google sheets 查找多个重叠时间的总持续时间

Google sheets 查找多个重叠时间的总持续时间,google-sheets,formula,overlap,Google Sheets,Formula,Overlap,我有一份员工时间表的日期和时间列表。时间从F列开始,在G列结束。有时项目的时间会重叠。该员工不会因为重叠的项目获得报酬,但我们需要单独跟踪每个项目。我希望能够查看E、F和G列,找到任何重叠的项目,并返回单个时间条目。在下面的示例中,请注意第1行没有与其他行重叠,但第2-6行中有一系列重叠条目。它们不一定都重叠,但更像一条“链”。我想写一个公式(而不是脚本)来解决这个问题 +---+------------+------------+----------+ | | E |

我有一份员工时间表的日期和时间列表。时间从F列开始,在G列结束。有时项目的时间会重叠。该员工不会因为重叠的项目获得报酬,但我们需要单独跟踪每个项目。我希望能够查看E、F和G列,找到任何重叠的项目,并返回单个时间条目。在下面的示例中,请注意第1行没有与其他行重叠,但第2-6行中有一系列重叠条目。它们不一定都重叠,但更像一条“链”。我想写一个公式(而不是脚本)来解决这个问题

+---+------------+------------+----------+
|   |     E      |       F    |    G     |
+---+------------+------------+----------+
| 1 | 10/11/2017 | 12:30 PM   |  1:00 PM |
| 2 | 10/11/2017 |  1:00 PM   |  3:00 PM |
| 3 | 10/11/2017 |  2:15 PM   |  6:45 PM |
| 4 | 10/11/2017 |  2:30 PM   |  3:00 PM |
| 5 | 10/11/2017 |  2:15 PM   |  6:45 PM |
| 6 | 10/11/2017 |  3:00 PM   |  6:45 PM |
+---+------------+------------+----------+
我希望评估这些列,并在一系列重叠的最后一行返回每个“链”的总持续时间。在我下面的例子中,我们将把它放在H列中。它为从第2行开始到第6行结束的系列找到5.75小时(下午1点到下午6:45)

我尝试过写查询,但发现自己又回到了起点。如果有人有建议,我很想知道!先谢谢你

尼尔

我的解决方案 要解决此问题,我需要另外两列:

第一步。返回“重叠”或“确定” 当一端在另一端内时,两条线重叠:

我做了一个
查询
公式来检查:

=if(查询(数组公式({value(E1:E+F1:F),value(E1:E+G1:G)}),
“选择计数(第1列),其中
Col1<“&值(G1+E1-1/10^4)&”
和Col2>“&value(F1+E1+1/10^4)和“标签计数(Col1)””,0)>1,“重叠”,“确定”)

向下拖动公式。结果是列:

ok
overlap
overlap
overlap
overlap
ok
ok
overlap
overlap
overlap
overlap
ok
1
2
2
2
2
2
3
4
4
4
4
4
在公式中:

  • 用于比较数字。必须比较每个参数:日期+时间
  • 使用
    -1/10^4
    +1/10^4
    是因为
    查询中的不精确性
第二步。获取时间链 这部分很棘手。我的解决方案只有在数据按示例中的方式排序时才有效

在单元格
I1
中输入1。在单元格
I2
中输入公式:

=if(或(和(H1=H2,H2=“重叠”)和(H2=“确定”,H1=“重叠”)),I1,I1+1)

向下拖动公式。结果是列:

ok
overlap
overlap
overlap
overlap
ok
ok
overlap
overlap
overlap
overlap
ok
1
2
2
2
2
2
3
4
4
4
4
4
步骤三获取持续时间 在J4中,粘贴并复制公式:

=如果(H1=“确定”,
舍入(查询(数组形式({value(E:E+F:F)、value(E:E+G:G)、I:I}),
“选择最大值(Col2)-最小值(Col1),其中Col3=“&I1
&“标签最大(Col2)-最小(Col1)”)*24,2),”)

查询按组获取最大持续时间,如步骤2中所示

  • 由于
    查询

绝对令人惊奇!谢谢你,Max。不仅你的解决方案奏效了,而且我也很感激你的解释,这样我才能理解它是如何工作的。我非常感激!