Date 查找工作时间(不包括多次输入和输出)

Date 查找工作时间(不包括多次输入和输出),date,excel,spreadsheet,vba,Date,Excel,Spreadsheet,Vba,我有一张excel表格,上面有数千条员工在工作时间出入的记录。我想找出员工工作的持续时间。我需要一种方法来计算先进和后出之间的差异,并忽略它们之间的记录。 床单看起来像这样 Employee In out A 1-Jan 6:30 1-Jan 9:30 A 1-Jan 9:50 1-Jan 4:30 A 1-Jan 4:40 1-Ja

我有一张excel表格,上面有数千条员工在工作时间出入的记录。我想找出员工工作的持续时间。我需要一种方法来计算先进和后出之间的差异,并忽略它们之间的记录。 床单看起来像这样

Employee       In                 out
   A       1-Jan 6:30            1-Jan 9:30
   A       1-Jan 9:50            1-Jan 4:30
   A       1-Jan 4:40            1-Jan 5:30
   A       2-Jan 6:32            2-Jan 10:30
   A       2-Jan 11:00           2-Jan 4:25
   B           .                   .
   .
   .           .                   .

如果数据在A、B和C列中,并且您希望在D1列中获得员工
A
的持续时间,则非常感谢您提供的任何帮助,此公式可以:

=MAX(IF(A1:A5="A",C1:C5))-MIN(IF(A1:A5="A",B1:B5))
将公式输入到单元格中后,您需要按Ctrl+Shift+enter使其生效,而不是按
enter
来退出光标

我希望这有帮助


编辑:我没有假设任何标题,因此数据从第1行开始。

对于“A”,假设您的列是
A:A
C:C
(并且日期是这样识别的,而不是文本):


通过使用
VLOOKUP
,有一种偷偷摸摸的方法-必须对数据进行排序才能使其工作

要找到开始时间,很容易找到
=VLOOKUP(“A”,A2:C999,2,FALSE)

为了找到结束时间,我们必须找到最后一个“A”记录,我们通过搜索比“A”稍多的一点来实现这一点:
=VLOOKUP(“A!”,A2:C999,3,TRUE)

注意VLOOKUP中的TRUE,它将返回下一个小于我们搜索的最大值,因此它将返回最后一个“A”

从另一个中减去一个,我们得到了方程:

=VLOOKUP("A!",A2:C999,3,TRUE)-VLOOKUP("A",A2:C999,2,FALSE)

9:50->4:30, 11:00->4:25? 这些数据毫无意义,因为员工在进入之前就离开了!!!上午9:50,下午4:30。这是一个随机的例子。
=VLOOKUP("A!",A2:C999,3,TRUE)-VLOOKUP("A",A2:C999,2,FALSE)