-2

我有一个由实验识别引擎收集的大型数据电子表格。它根据面部数据收集开始时间和结束时间数据。我遇到的问题是,不同的角度和光照导致识别系统认为一个人是两个或三个(或者在一种特定情况下是 12 个)。我已经浏览并手动编辑了电子表格以包含正确的工人姓名,但我想计算每个人的工作时间。

目前,电子表格如下所示:

Name        Date                    Time Started            Time Finished

Person A    17/05/2016 10:30:20 AM  17/05/2016 10:30:20 AM  17/05/2016 10:41:18 AM
Person A    17/05/2016 10:41:20 AM  17/05/2016 10:41:20 AM  17/05/2016 10:41:20 AM
Person A    17/05/2016 11:07:09 AM  17/05/2016 11:07:09 AM  17/05/2016 11:55:24 AM
Person B    17/05/2016 10:58:30 AM  17/05/2016 10:58:30 AM  17/05/2016 10:58:30 AM
Person B    17/05/2016 10:58:42 AM  17/05/2016 10:58:42 AM  17/05/2016 10:58:42 AM
Person C    17/05/2016 10:28:05 AM  17/05/2016 10:28:05 AM  17/05/2016 11:19:28 AM
Person C    17/05/2016 10:30:26 AM  17/05/2016 10:30:26 AM  17/05/2016 11:52:56 AM
Person C    17/05/2016 10:43:30 AM  17/05/2016 10:43:30 AM  17/05/2016 11:27:20 AM

这是一个代码示例,但它适用于 Person Q。

我已经按照上次看到的时间顺序排列了它,所以基本上我想添加一个列,从最初的工作时间中减去最后的工作时间。

Time Started对于每个名称,可以通过从最后一个条目中减去第一个条目来计算正确的工作时间Time Finished。所以在这个例子中,我可以通过以下方式找到工作时间Person C17/05/2016 11:27:20 AM- 17/05/2016 10:28:05 AM

到目前为止,我一直在手动执行此操作,但我更喜欢一个可以查看Name列中数据的函数,然后Hours Worked通过查找第一个Time Started条目并从最后一个条目中减去它来计算Time Finished

谁能提供一些关于如何在 Excel 中执行此操作的指导?如果没有,在 Excel-VBA 中是否有可能?

提前致谢。

4

3 回答 3

1

我尝试了各种公式来提取日期和时间数据,如下图所示。中使用的完整公式D1

=(DATE(MID(TRIM(C1),7,4),MID(TRIM(C1),4,2),MID(TRIM(C1),1,2))+TIME(MID(TRIM(C1),12,2),MID(TRIM(C1),15,2),MID(TRIM(C1),18,2))-=DATE(MID(TRIM(B1),7,4),MID(TRIM(B1),4,2),MID(TRIM(B1),1,2))+TIME(MID(TRIM(B1),12,2),MID(TRIM(B1),15,2),MID(TRIM(B1),18,2)))

然后差异如图所示,D1E1导致错误结果可能是由于外部数据和系统本机功能。虽然我可以通过只包含日期和时间部分的修剪字符串来获得正确的结果,但它需要调整AM/PM

带有公式的示例

研究这些问题,我建议您采用另一种方法,如果它方便您采用的话。

  • 将工作表数据复制/粘贴到自由文本编辑器 Note Tab Light 并将其保存为文本文件。
  • 在 Excel 中导入带有固定分隔符的已保存文本文件,但删除日期和时间部分之间的分隔条,其余部分保持原样。
  • 将简单的公式放在 I3 中,以计算完成时间和开始时间之间的时间差,即=G3-E3
  • 您可以通过本机 Excel 函数对 Person wise 分组进行总计。样本数据图像如下。

在此处输入图像描述

于 2016-05-17T08:05:59.957 回答
1

在表格中添加一列。叫它Elapsed

在下面的公式中,请注意我使用了命名范围。你也可以这样做;用绝对地址替换它们;或者,如果您的数据在表中,请将它们替换为适当的结构化引用。

在 Excel 2016 中:

=MAXIFS(Time_Finished,Name,$A2)-MINIFS(Time_Started,Name,$A2)

在早期版本中,您需要输入一个稍微不同的公式作为数组公式。ctrl+shift您可以通过在击球时按住enter

=MAX(IF($A2=Name,Time_Finished))- MIN(IF($A2=Name,Time_Started))

这将为您提供如下所示的输出:

在此处输入图像描述

然后,您可以根据您的要求以多种方式按人分组。

于 2016-05-17T10:35:57.760 回答
1

数据透视表是您的朋友。我不确定您的日期/时间字段是如何格式化的,所以在我的屏幕截图中,我将开始和结束日期/时间划分为日期和时间字段。透视表,该表由名称以及开始和结束日期/时间戳组成。行=名称值=结束日期;时间结束; 开始日期; 开始时间 对于每个值,单击下拉菜单并选择“字段值设置”。对于结束日期/时间,选择“最大值”。对于开始日期/时间,选择“最小”值。然后只需输入一个简单的公式,并将其格式化为时间。 显示设置的 excel 数据透视表的屏幕截图

于 2016-05-17T11:07:02.460 回答