2016-10-19 2 views
0

Ich möchte herausfinden, letzte Vorkommen von bestimmten Wert und wenn es dort ist, wenden Sie einige Formel.den letzten Wert mit passender Zeile in Excel finden

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 

Die Maschinenspalte hat den Computernamen, Startzeit ist die Protokollzeit dieses bestimmten Ereignisses und die Warnung kann Start des Endes sein.

Ich brauche eine Ausgabe wie folgt vor:

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 

Unterschied wird nur im Falle von E bestückt werden und es gibt entsprechende Startereignis für diese Maschine, wenn es mehr als einen Startereignis sind dann zunächst eine auswählen. Ich möchte nur verstehen, ob es mit nur Excel-Formel (ohne Makro) möglich ist? wenn ja, wie?

Ich habe bereits versucht es Indexfunktion ohne

Erfolg mit
=IF(C3="E",MATCH(A3,A2:$A$2,0),"") 

Antwort

1

Ja, es ist möglich, aber es ist nicht einfach. Sie müssen eine Array-Formel verwenden, um dies zu lösen. Die Formel würde:

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

erste Datenreihe ist 2, Spalte A hat die Maschine Namen, Spalte B die Protokollzeiten, Spalte c die „S“/„E“. Setzen Sie die Formel in Spalte D in der ersten Datenzeile und drücken Sie STRG + UMSCHALT + EINGABETASTE, um es zu einer Matrixformel zu machen. Sie sollten jetzt {} um die Formel sehen. Kopieren Sie die Zelle (CTRL + C) und in alle Zeilen außer die Reihe einfügen, wo die Formel ist bereits in.

Wenn Sie weitere Hilfe benötigen, um einen Kommentar zu platzieren.

+0

Es gibt einen falschen Wert, wenn zwei aufeinanderfolgende "E" vorhanden sind. Es ist möglich, manchmal zwei "E" zu haben, in diesem Fall müssen wir das zweite "E" ignorieren –

1

Es kann mit einer komplizierten Array-Formel durchgeführt werden, aber eine Hilfsformel kann die Unterscheidung der Gruppen erleichtern. Zum Beispiel in D2:

= (ABS(N(D1))+($A2<>$A1)) * IF(C2="S",1,-1) 

und die letzten Index + Match Formel, um es als nächste in E2:

=IF($C2="E", ROUND(($B2 - INDEX($B$2:$B$9, MATCH(ABS($D2),$D$2:$D$9,0)))*24*60*60,0),"") 

Mit Ihren Beispieldaten, sollte es in etwa wie folgt ergeben:

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 
+0

warum ist die Gruppe für die letzte zwei Reihe 3? es sollte 1 sein, da es dieselbe Maschine ist. Da ist ein Tippfehler in meiner Frage, ich brauche 490 als Zeitunterschied in der letzten Reihe. d. h. Differenz zwischen Anfangsbuttion (die noch nicht nah ist) und Endendknopf. –

Verwandte Themen