Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 列表中标准的最后一项和第一项之间的差异_Excel - Fatal编程技术网

Excel 列表中标准的最后一项和第一项之间的差异

Excel 列表中标准的最后一项和第一项之间的差异,excel,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

我有下面的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.
因此,我需要一个类似于差分公式的东西。 到目前为止,我的一个想法是通过大函数和小函数

=LARGE(B2:B4;1)-SMALL(B2:B4;1)
然而,这样我必须分别找到每个数组(B2:B4,B5:B6,B7:B10);因此,我更愿意将productID作为公式中的一个标准

总结: 你知道我如何计算列表中某个产品的最后一个第一个事件之间的分钟差吗

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

在某些条件下, 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)
查找最后一个匹配值

=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)
注意如果最后一个值小于第一个值,您将收到一个错误。

=ROUND(MMULT(聚合({14,15},6,B$2:B$10/(A$2:A$10=C2),1),{1;-1})*1440,1)和“Min”

然后抄下来

我感觉德语版Excel中水平和垂直数组的分隔符分别是句号(.)和分号(;),因此我相信您需要:

=RUNDEN(MMULT(聚合({14.15};6;B$2:B$10/(A$2:A$10=C2);1);{1;-1})*1440;1)和“Min”

不过,如果没有达到要求的结果,请告诉我


关于

事件时间列中的条目是否在您的Excel版本中正确识别日期/时间值?在矿山中,以句号(.)作为分隔符的日期被视为文本,而不是正确的日期。你能澄清一下吗?如果您不确定,请使用ISNUMBER函数测试它们,例如,=ISNUMBER(B2)如果该单元格中的条目是正确识别的(即数字)日期/时间值,则应返回TRUE。Hi XOR LX,如果我输入ISNUMBER,则返回TRUE。我使用的是2010年的德文Excel版本。非常感谢。我将很快发布答案。我应该补充一点,您需要Excel 2010或更高版本才能工作。