Oto kilkustopniowe rozwiązanie, zakładając, że możesz wykonać niektóre z nich ręcznie i nie potrzebujesz jednego całkowicie zautomatyzowanego rozwiązania: (a jeśli tak, to jestem pewien, że możesz wziąć to stąd ...)
- Excel nie jest bazą danych.
- Zrzuć wszystkie dane w jednym arkuszu. (Dla przykładu zakładam, że masz UID w kolumnie A, DATE w kolumnie B i STATUS w C).
- W drugim arkuszu wykonaj polecenie Usuń duplikaty tylko w kolumnie UID . (np. skopiuj tylko filtrowane unikaty lub skopiuj całą kolumnę, a następnie wykonaj standardowe usuwanie duplikatów).
W kolumnie DATA dodaj następującą formułę Array *:
{= MAX (JEŻELI (Arkusz danych! A: A = A1, Arkusz danych! B: B))}
Zasadniczo wybiera najnowszą datę dla każdego identyfikatora UID. (Dotyczy to oczywiście pierwszego rzędu, pamiętaj o wypełnieniu wszystkich pozostałych wierszy A1, A2, ...)
W kolumnie STATUS dodaj następującą formułę macierzy:
{= INDEKS (JEŻELI (DataSheet! A: A = A1, IF (DataSheet! B: B = B1, DataSheet! C: C)), MATCH (TRUE, IF (DataSheet! A: A = A1, IF (DataSheet! B: B = B1, PRAWDA)), 0))}
(Ponownie zwróć uwagę na pierwszy wiersz, wypełnij resztę).
Ten jest bardziej złożony, podzielmy go:
JEŻELI (Arkusz danych! A: A = A1, JEŻELI (Arkusz danych! B: B = B1, Arkusz danych! C: C))
Ta formuła tablicowa po prostu wykonuje odpowiednik klauzuli SQL WHERE z dwoma warunkami: dla wszystkich wierszy, które pasują zarówno do UID (kolumna A), jak i DATE (kolumna B), zwróć wartość wiersza w kolumnie C (STATUS).
MECZ (PRAWDA, JEŻELI (Arkusz danych! A: A = A1, JEŻELI (Arkusz danych! B: B = B1, PRAWDA)), 0)
Pierwsza formuła powinna być wystarczająco dobra, ale ponieważ nie mamy sposobu na wyciągnięcie tylko wartości innej niż NULL (lub innej niż FAŁSZ), a Excel nie ma formuły WSPÓŁPRACA, musimy skorzystać z odrobiny pośrednictwo.
Formuła MATCH przeszukuje tablicę zwróconą przez JEŻELI (te same warunki, co powyżej, ale po prostu zwraca PRAWDA, jeśli jest zgodna), w celu znalezienia pierwszej wartości PRAWDA. 3 parametr, 0, wymaga dokładnego dopasowania.
Ta formuła po prostu zwraca indeks pierwszego i jedynego wiersza, który jest zgodny z poprzednimi warunkami (dopasowanie UID i DATE (która była maksymalną datą, która pasuje do UID)).
{= INDEKS (JEŻELI ( patrz wyżej ), MATCH ( patrz powyżej ))}
Teraz jest wystarczająco proste, aby pobrać indeks pasującego wiersza z MATCH i wyciągnąć odpowiednią wartość STATUS z tablicy IF. Zwraca to pojedynczą wartość, nowy STATUS, który ma gwarancję (jeśli wykonałeś wszystkie te kroki poprawnie) od najnowszej daty dla każdego identyfikatora UID.
6 Excel nie jest bazą danych.
* FOOTNOTE: jeśli nie znasz formuł tablicowych (choć myślę, że tak jest), spójrz na to : w zasadzie podajesz oryginalną formułę, która powinna dawać tablicę wartości (bez zawijasów {}), a następnie naciśnij CTRL+ SHIFT+ ENTER. Excel dodaje dla ciebie squiggly {} i oblicza wszystkie wartości jako tablicę.
* FOOTNOTE # 2: Poważnie, EXCEL NIE JEST BAZY DANYCH. ;-)