列表

时间:2017-05-11 06:29:08

标签: excel

我有以下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中发生事件的时间。 每个事件都列在表中;因此,可以出现ProductID 在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.

因此,我需要像 DIFFERENCE-IF-Formula 这样的东西。 到目前为止,我的一个想法是通过LARGE和SMALL功能。

=LARGE(B2:B4;1)-SMALL(B2:B4;1)

然而,这样我必须分别找到每个阵列(B2:B4,B5:B6,B7:B10);因此,我更倾向于将productID作为公式中的标准。

总结 您是否知道我如何计算列表中某个ProdcutID的最后第一个事件之间的分钟差异?

我宁愿避免使用任何类型的数组公式。

2 个答案:

答案 0 :(得分:0)

在某些条件下, 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)

注意如果最后一个值是SMALLER然后是第一个值,则会收到错误。

答案 1 :(得分:0)

=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"

虽然如果没有提供所需的结果,请告诉我。

此致