我希望协助计算小时和分钟中每个小区1
到15
之间日期和时间的差异。
问题是ref
并非所有人都一样,当ref
从R001
更改为R002
时,公式应该开始计算日期时差来自第一个单元格,新引用的最后一个单元格具有相同的ref
。
答案 0 :(得分:0)
此解决方案将使用内置于Excel中的AGGREGATE,INDEX和MINUTE函数
构建唯一引用ID的列表并将它们放在D列中
使用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返回列表中的第一个数字。
冲洗,洗涤,重复。确定引用ID的第一行。
再次像以前一样使用聚合。除了这个时间而不是LARGE,我们想要找到SMALL,所以将16更改为15.这将返回第一次出现的REF ID的行号。
AGGREGATE(15,6,ROW($A$2:$A$16)/--($C$2:$C$16=D2),1)
现在您知道要使用的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))
区分最后和第一个
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)