列表中条件的最后一项和第一项之间的差异



我有以下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)

注意:如果最后一个值小于第一个值,您将收到错误。

最新更新