查找工作所花费的时间,不包括多个输入和输出

时间:2013-09-17 08:58:06

标签: excel date excel-vba 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-Jan 5:30
   A       2-Jan 6:32            2-Jan 10:30
   A       2-Jan 11:00           2-Jan 4:25
   B           .                   .
   .
   .           .                   .

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:1)

假设数据位于A,B和C列,并且您希望D1列中的员工A的持续时间,则此公式将执行此操作:

=MAX(IF(A1:A5="A",C1:C5))-MIN(IF(A1:A5="A",B1:B5))

将公式输入单元格后,您需要按Enter才能使其运行,而不是按Ctrl+Shift+Enter来转义光标。

我希望这有帮助吗?

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

答案 1 :(得分:1)

使用VLOOKUP有一种偷偷摸摸的方式 - 必须对数据进行排序才能使其正常工作。

要查找开始时间,这很简单=VLOOKUP("A",A2:C999,2,FALSE)
要查找结束时间,我们必须找到最后的“A”记录,我们通过搜索比“A”更多的内容来执行此操作:=VLOOKUP("A!",A2:C999,3,TRUE)
注意VLOOKUP中的TRUE,因此它将返回小于我们搜索的下一个最大值,因此它将返回 last “A”

从另一个中减去一个,我们有等式:

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

答案 2 :(得分:0)

对于雇用“A”,假设您的列为A:AC:C(并且日期被识别为,而不是文字):

= SUMIF(A:A; "A"; C:C) - SUMIF(A:A; "A"; B:B)