Hier ist eine mehrstufige Lösung, vorausgesetzt, Sie können einen Teil davon manuell ausführen und benötigen keine einzige vollständig automatisierte Lösung.
- Excel ist keine Datenbank.
- Speichern Sie alle Daten auf einem einzigen Blatt. (Zum Beispiel gehe ich davon aus, dass Sie UID in Spalte A, DATE in Spalte B und den STATUS in C haben).
- In einem zweiten Blatt, führt ein Entfernen von Duplikaten auf der UID Spalte nur . (zB kopiere nur gefilterte Uniques oder kopiere die gesamte Spalte und führe dann ein standardmäßiges Remove Duplicates aus).
Fügen Sie in der Spalte DATE die folgende Array * -Formel hinzu:
{= MAX (WENN (Datenblatt! A: A = A1, Datenblatt! B: B))}
Dies wählt grundsätzlich das späteste Datum für jede UID aus. (Dies ist natürlich für die erste Reihe, stellen Sie sicher, dass Sie alle übrigen Reihen mit A1, A2, ... füllen.)
Fügen Sie in der Spalte STATUS die folgende Array-Formel hinzu:
{= INDEX (IF (Datenblatt! A: A = A1, IF (Datenblatt! B: B = B1, Datenblatt! C: C)), MATCH (TRUE, IF (Datenblatt! A: A = A1, IF (Datenblatt! B: B = B1, TRUE)), 0))}
(Beachten Sie wieder die erste Reihe, füllen Sie den Rest).
Dieser ist komplexer, lasst es uns zusammenfassen:
WENN (Datenblatt! A: A = A1, WENN (Datenblatt! B: B = B1, Datenblatt! C: C))
Diese Array-Formel führt einfach das Äquivalent einer SQL WHERE-Klausel mit zwei Bedingungen aus: Geben Sie für alle Zeilen, die sowohl der UID (A-Spalte) als auch dem DATE (B-Spalte) entsprechen, den Wert der Zeile in der C-Spalte (STATUS) zurück.
MATCH (TRUE, IF (Datenblatt! A: A = A1, IF (Datenblatt! B: B = B1, TRUE)), 0)
Die erste Formel hätte gut genug sein sollen, aber da wir nicht die Möglichkeit haben, nur den Wert ungleich Null (oder ungleich FALSCH) herauszuholen, und Excel keine COALESCE-Formel hat, müssen wir ein wenig darauf zurückgreifen Indirektion.
Die MATCH-Formel durchsucht das vom IF zurückgegebene Array (dieselben Bedingungen wie oben, gibt aber einfach TRUE zurück, wenn es eine Übereinstimmung ist) nach dem ersten TRUE-Wert. Der Parameter 3, 0, erfordert eine genaue Übereinstimmung.
Diese Formel gibt einfach den Index der ersten und einzigen Zeile zurück, die mit den vorherigen Bedingungen übereinstimmt (übereinstimmende UID und DATE (dies war das maximale Datum, das mit der UID übereinstimmt)).
{= INDEX (IF ( siehe oben ), MATCH ( siehe oben ))}
Nun ist es einfach genug, den Index der übereinstimmenden Zeile aus dem MATCH zu entnehmen und den entsprechenden STATUS-Wert aus dem IF-Array zu ziehen. Dies gibt einen einzelnen Wert zurück, Ihren neuen STATUS, der garantiert (wenn Sie alle diese Schritte korrekt ausgeführt haben) ab dem neuesten Datum für jede UID ist.
6 Excel ist keine Datenbank.
* FOOTNOTE: Wenn Sie mit Array-Formeln nicht vertraut sind (obwohl ich glaube, dass Sie es sind), sehen Sie dies : Im Grunde geben Sie die ursprüngliche Formel ein, die zu einem Array von Werten führen soll (ohne das verzerrte {}), und drücken Sie dann CTRL+ SHIFT+ ENTER. Excel fügt die Schnörkel {} für Sie hinzu und berechnet alle Werte als Array.
* FOOTNOTE # 2: Im Ernst, EXCEL IST KEINE DATENBANK. ;-)