我想找出最后一次出现的特定值,如果有的话,应用一些公式。
Machine Starttime Alert
a 10/19/2016 12:16:15 S
a 10/19/2016 12:18:15 E
a 10/19/2016 12:19:20 S
b 10/19/2016 12:21:45 S
b 10/19/2016 12:21:48 S
b 10/19/2016 12:21:55 E
a 10/19/2016 12:23:15 S
a 10/19/2016 12:27:30 E
机器列将具有机器名称,Starttime是该特定事件的日志时间,警报可以是End的开始。
我需要输出如下:
Machine Starttime Alert Difference
a 10/19/2016 12:16:15 S
a 10/19/2016 12:18:15 E 120
a 10/19/2016 12:19:20 S
b 10/19/2016 12:21:45 S
b 10/19/2016 12:21:48 S
b 10/19/2016 12:21:55 E 10
a 10/19/2016 12:23:15 S
a 10/19/2016 12:27:30 E 490
仅在E的情况下才会填充差异,并且该机器有相应的启动事件,如果有多个启动事件,则选择第一个。我只是想了解是否可以使用excel公式(没有宏)?如果有,怎么样?
我已经尝试使用索引功能而没有成功
=IF(C3="E",MATCH(A3,A2:$A$2,0),"")
答案 0 :(得分:1)
是的,这是可能的,但这并不容易。您必须使用数组公式来解决此问题。公式为:
=IF(C2="S","",(B2-MIN(IF($A$2:A2=A2,IF($C$2:C2="S",IF(ROW($A$2:A2)>MAX(IF(ROW($A$2:A2)<ROW(A2),IF($A$2:A2=A2,IF($C$2:C2="E",ROW($A$2:A2))))),$B$2:B2)))))*86400)
第一个数据行是2,A列具有机器名,B列是日志时间,列c是&#34; S&#34; /&#34; E&#34;。将公式放在第一个数据行的D列中,然后按CTRL + SHIFT + ENTER使其成为数组公式。您现在应该在公式周围看到{}
。
复制单元格(CTRL + C)并将其粘贴到除公式所在的行之外的所有行中。
如果您需要更多帮助,请发表评论。
答案 1 :(得分:1)
可以使用一些复杂的数组公式来完成,但辅助公式可以更容易区分组。例如,在D2
:
= ( ABS(N(D1))+($A2<>$A1) ) * IF(C2="S",1,-1)
以及E2
中的最后一个Index + Match公式:
=IF($C2="E", ROUND( ($B2 - INDEX($B$2:$B$9, MATCH(ABS($D2),$D$2:$D$9,0) ) )*24*60*60,0),"")
使用您的示例数据,应该会产生如下结果:
A B C D E
-----------------------------------------------------------
Machine Starttime Alert Group Index+Match
a 10/19/2016 12:16 S 1
a 10/19/2016 12:18 E -1 120
a 10/19/2016 12:19 S 1
b 10/19/2016 12:21 S 2
b 10/19/2016 12:21 S 2
b 10/19/2016 12:21 E -2 10
a 10/19/2016 12:23 S 3
a 10/19/2016 12:27 E -3 255