Excel中的日期时间差异

时间:2018-03-31 12:48:06

标签: excel-formula

Date Time difference between adjacent cells

我希望协助计算小时和分钟中每个小区115之间日期和时间的差异

问题是ref并非所有人都一样,当refR001更改为R002时,公式应该开始计算日期时差来自第一个单元格,新引用的最后一个单元格具有相同的ref

1 个答案:

答案 0 :(得分:0)

此解决方案将使用内置于Excel中的AGGREGATE,INDEX和MINUTE函数

第1步

构建唯一引用ID的列表并将它们放在D列中

第2步

使用AGGREGATE确定ref ID出现的最后一行。

AGGREGATE(16,6,ROW($A$2:$A$16)/--($C$2:$C$16=D2),1)

AGGREGATE是一个执行数组计算的函数。因此,避免在函数中使用完整列引用。

16告诉AGGREGATE使用LARGE公式,因此它将按降序构建一个列表。

6告诉AGGREGATE忽略/排除列表中出错的任何结果。

ROW()将拉出正在评估的行号。

- 将生成的TRUE或FALSE结果转换为1或0。

C2:C16 = D2正在寻找该行是否具有REF ID。

1告诉AGGREGATE返回列表中的第一个数字。

第3步

冲洗,洗涤,重复。确定引用ID的第一行。

再次像以前一样使用聚合。除了这个时间而不是LARGE,我们想要找到SMALL,所以将16更改为15.这将返回第一次出现的REF ID的行号。

AGGREGATE(15,6,ROW($A$2:$A$16)/--($C$2:$C$16=D2),1)

第4步

现在您知道要使用的ROW#,将行号放在INDEX公式中以获取您要使用的单元格。请注意,索引实际上返回了单元格地址,因此可以像单元格引用一样使用。

第一次反抗

INDEX(B:B,AGGREGATE(16,6,ROW($A$2:$A$16)/--($C$2:$C$16=D2),1))

上次参考

INDEX(B:B,AGGREGATE(15,6,ROW($A$2:$A$16)/--($C$2:$C$16=D2),1))

第5步

区分最后和第一个

INDEX(B:B,AGGREGATE(15,6,ROW($A$2:$A$16)/--($C$2:$C$16=D2),1))-INDEX(B:B,AGGREGATE(16,6,ROW($A$2:$A$16)/--($C$2:$C$16=D2),1))

现在,如果第一次引用发生在最后一次引用的时间戳之前,您将结束负数。如果你不关心负数,将整个事物包裹在一个绝对函数或平方的结果中,然后将结果平方根。

ABS(INDEX(B:B,AGGREGATE(15,6,ROW($A$2:$A$16)/--($C$2:$C$16=D2),1))-INDEX(B:B,AGGREGATE(16,6,ROW($A$2:$A$16)/--($C$2:$C$16=D2),1)))

将您选择的上述公式放在E2中,并根据需要复制。

第6步

由于您希望在JUST小时和分钟内得到答案,因此我选择将信息分成两个单独的列,以便您可以根据需要使用它们。此外,我将引用E列中的值,而不是将它们嵌入到以下公式中,如果您想避免使用额外的列,这也是一个选项。

如果您将结果格式化为E2,则会注意到您获得了一个整数和一些小数值。整数表示天数。小数表示TIME为一天的分数。为了得到小时数,你乘以24,因为一天24小时,只取整数。将以下公式放在F2中并复制下来。

INT(24*E2)

由于您还需要分钟,我们可以使用MINUTE功能直接从E2中取出分钟。将以下内容放在G2中并复制下来。

MINUTE(E2)

POC