如何在 Excel 中计算“参与时间”

如何在 Excel 中计算“参与时间”

我有一组这样的数据:

       |      A         |          B       | 
       -------------------------------------
    1  | Start Time     |   End  Time      |
    2  |  6:43 AM       |     7:00 AM      |
    3  |  8:01 AM       |     9:43 AM      |
    4  |  8:02 AM       |     8:20 AM      |
    5  |  8:22 AM       |     8:57 AM      |
    6  |  8:58 AM       |     9:55 AM      |
    7  |  1:20 PM       |     2:41 PM      |
    8  |  1:27 PM       |     2:11 PM      |

每一行代表一名员工正在处理某项任务的情况,在本例中,是在上午 6:43 到下午 2:11 之间。因此,根据常识,你可以用“结束时间”减去“开始时间”来得到“参与”时间的长度。但这不是参与时间。这是“任务长度”。他完成一项任务所花的时间长度。

这里的问题是,一名员工可以同时处理多项任务。如果你看第 3 行(上午 8:01 至上午 9:43),该员工花了 1 个多小时才完成 1 项任务。在执行该特定任务的同时,他开始执行第 4、5 和 6 行中的其他任务。

所以考虑到“参与时间”,他从上午 8:01 到上午 9:55 都在参与。我想不出一个动态公式可以自动为整个表格执行此操作。另一个问题是,这只是 1 名员工 1 天的数据集。我有 10 名员工,每周工作 5 天。他们在 1 个月内产生大约 3,000 行数据。您能建议一个公式、数据透视表技术或 VBA 代码让我动态地处理数字吗?

谢谢你!

答案1

看看这是否有帮助,制作 2 个辅助列,第一个是区块编号。这显示了有一个或多个任务正在进行的时间区块。 在此处输入图片描述

公式是 e3=1,f3=c3,以提供起点开始。

从 e4 开始的 e 列的其余部分使用

  • =+如果(B4>F3,1,0)+E3

检查新的开始时间是否在当前结束时间内。如果是,则延长区块,否则开始新的区块编号

以 f4 开头的 f 列使用

  • =+如果 (E4 > E3,C4,MAX(C4,F3))

检查区块结束时间是否已延长。对于每个区块,b 中的最小时间和 c 中的最大时间将生成参与时间。

我希望我足够了解你的问题。

相关内容