我有以下Excel电子表格
A B C D
1 Product ID Time of Event
2 27152 01.04.2017 08:45:00 27152 70 Min.
3 27152 01.04.2017 09:00:00 29297 108 Min.
4 27152 01.04.2017 09:55:00 28802 28 Min.
5 29297 02.04.2017 11:02:00
6 29297 02.04.2017 12:50:00
7 28802 18.04.2017 11:48:00
8 28802 18.04.2017 12:00:00
9 28802 18.04.2017 12:13:00
10 28802 18.04.2017 12:16:00
在A 列中,您可以找到不同的产品 ID。 在B 列中,产品 ID 中发生事件的时间。 表中列出了每个事件;因此,可能会出现产品 ID 在 A 列中多次出现。
在D 列中,我现在想显示 产品 ID 中发生的第一个和最后一个事件。
D2 = 9:55:00 - 8:45:00 = 70 Min.
D3 = 12:50:00 - 11:02:00 = 108 Min.
D4 = 12:16:00 - 11:48:00 = 28 Min.
因此,我需要类似差异如果公式的东西。 到目前为止,我的一个想法是使用LARGE和SMALL功能。
=LARGE(B2:B4;1)-SMALL(B2:B4;1)
但是,这样我必须单独查找每个数组(B2:B4,B5:B6,B7:B10);因此,我更愿意将productID作为公式中的条件。
总结:您知道如何计算列表中某个 ProdcutID 的最后一个事件和第一个事件之间的分钟差吗?
我宁愿避免任何类型的数组公式。
=ROUND(MMULT(AGGREGATE({14,15},6,B$2:B$10/(A$2:A$10=C2),1),{1;-1})*1440,1)&" Min"
并抄下来。
我感觉德语版 Excel 中水平和垂直数组的分隔符分别是句点 (.) 和分号 (;),所以我相信你需要:
=RUNDEN(MMULT(AGGREGAT({14.15};6;B$2:B$10/(A$2:A$10=C2);1);{1;-1})*1440;1)&" Min"
尽管如果这没有给出所需的结果,请告诉我。
问候
在某些条件下, 1. 假设您将 B 列转换为 2 列 2. 时间按升序排列
A B C
Product ID Time of Event TIMES
27152 01.04.2017 8:45:00
27152 01.04.2017 9:00:00
27152 01.04.2017 9:55:00
29297 02.04.2017 11:02:00
29297 02.04.2017 12:50:00
28802 18.04.2017 11:48:00
28802 18.04.2017 12:00:00
28802 18.04.2017 12:13:00
28802 18.04.2017 12:16:00
这将在不使用数组的情况下工作
=(INDEX($C$2:$C$10,SUMPRODUCT(MAX(ROW($A$2:$A$10)*(D2=$A$2:$A$10))-1))-INDEX($C$2:$C$10,MATCH(D2,$A$2:$A$10,0)))*1440
将时间转换为分钟
=(time*1440)
查找第一个匹配值
=INDEX($C$2:$C$10,MATCH(D2,$A$2:$A$10,0))
查找最后一个匹配值
=INDEX($C$2:$C$10,SUMPRODUCT(MAX(ROW($A$2:$A$10)*(D2=$A$2:$A$10))-1)
注意:如果最后一个值小于第一个值,您将收到错误。