Oto inne możliwe podejście. To zależy od trzech warunków:
- Musi być dostępny unikalny identyfikator umożliwiający odróżnienie duplikatu od pól, które nie są duplikatami. W tym przypadku pole MEMBER # służy temu celowi. W innych przypadkach identyfikator może być budowany jako kombinacja wartości w kilku polach. Ten identyfikator może być wartością w jednym polu lub zbiorem wartości w kilku polach.
- Nie więcej niż dwa duplikaty dowolnego MEMBER #, tj. Brak potrójnych lub więcej wielokrotnych „zduplikowanych” rekordów.
- Wiersze są sortowane według identyfikatora MEMBER #.
Chodzi o to, aby zbudować przekształconą tabelę, najwygodniej na prawo od istniejącej tabeli, która wykorzystuje formuły do konsolidacji - w jednym wierszu - częściowych danych, które są współużytkowane między dwoma zduplikowanymi wierszami, pozostawiając jeden wypełniony wiersz i jeden pusty rząd.
Po wykonaniu tej czynności można zastosować filtr do tabeli wyników, aby wykluczyć puste wiersze, pozostawiając wypełnione wiersze do skopiowania w inne miejsce.
Jak pokazano poniżej, dodałem pole flagi „DUP” w kolumnie A: Jest równe 1, jeśli MEMBER # w kolumnie C jest równy MEMBER # w poprzednim wierszu, a w przeciwnym razie wynosi 0. Dwa zestawy wierszy w przykładowych danych ze zduplikowanymi numerami MEMBER # są podświetlone na żółto.
Oto jak wygląda tabela wyników formuł. Zgodnie z oczekiwaniami informacje uzupełniające, które zostały udostępnione między dwoma rekordami, zostały zebrane w jednym z rekordów, pozostawiając drugi rekord wypełniony podwójnymi myślnikami („-”). (Dwa zestawy duplikatów wierszy w przykładowych danych są podświetlone na ciemnoniebiesko w tabeli).
Patrząc na pierwsze dwa wiersze tabeli, w których były zduplikowane wersje dla MEMBER # 550061, drugi „Gen” w wierszu 4 kolumny MEMBER_FIRST_NAME został zastąpiony przez „-”; poprzednio pusta ENROLLMENT_DATE w wierszu 3 jest teraz wypełniona 3/2/2013, przeniesiona w górę z wiersza 4; wartości N / A dla drugiego pola DRAWING_ENTRIES (kolumna M w oryginalnej tabeli, kolumna AS w nowej) zostały zastąpione spacjami.
Wystarczy zastosować filtr, użyć kolumny DUP jako kolumny kryterium, wybrać tylko wiersze, w których DUP wynosi 0 - i skopiować wynik do nowej lokalizacji.
Formuły stosowane do konsolidacji duplikatów są zasadniczo identyczne pod względem struktury, więc warto je zbadać w całości. Oto pierwsza formuła w tabeli z komórki AH3 dla kolumny MEMBER_FIRST_NAME (dołączam na końcu tego postu pełny zestaw formuł dla pierwszego wiersza tabeli wyników).
=IF($A3=1, If this is row 2 of a DUP set,
"--", Set value of the result cell to "--"
Otherwise it's a row 1 (maybe a dup, maybe not)
IF($A4=0, Is the following row its dup?
IF(IFERROR(B3="",FALSE),"",B3), No, set result to the value on this row
IF(OR(IFERROR(B3="",FALSE),ISERROR(B3)), Yes, but is this row's value blank or error?
IF(IFERROR(B4="",FALSE),"",B4), Yes, use the value from the following row
IF(IFERROR(B3="",FALSE),"",B3)))) No, use the value from this row
Jeden dodatkowy komentarz do kodu: nieco okrężna lokalizacja IFERROR(<cell address>="",FALSE)
jest potrzebna do prawidłowego zignorowania wartości błędów N / A w niektórych wierszach.
Kod pierwszego wiersza tabeli wyników
DUP =IF(D3=D2,1,0)
FNAME =IF($A3=1,"--",IF($A4=0,IF(IFERROR(B3="",FALSE),"",B3),IF(OR(IFERROR(B3="",FALSE),ISERROR(B3)),IF(IFERROR(B4="",FALSE),"",B4),IF(IFERROR(B3="",FALSE),"",B3))))
LNAME =IF($A3=1,"--",IF($A4=0,IF(IFERROR(C3="",FALSE),"",C3),IF(OR(IFERROR(C3="",FALSE),ISERROR(C3)),IF(IFERROR(C4="",FALSE),"",C4),IF(IFERROR(C3="",FALSE),"",C3))))
MEMBER# =IF($A3=1,"--",IF($A4=0,IF(IFERROR(D3="",FALSE),"",D3),IF(OR(IFERROR(D3="",FALSE),ISERROR(D3)),IF(IFERROR(D4="",FALSE),"",D4),IF(IFERROR(D3="",FALSE),"",D3))))
ENTRY DT =IF($A3=1,"--",IF($A4=0,IF(IFERROR(E3="",FALSE),"",E3),IF(OR(IFERROR(E3="",FALSE),ISERROR(E3)),IF(IFERROR(E4="",FALSE),"",E4),IF(IFERROR(E3="",FALSE),"",E3))))
ENROL_DT =IF($A3=1,"--",IF($A4=0,IF(IFERROR(F3="",FALSE),"",F3),IF(OR(IFERROR(F3="",FALSE),ISERROR(F3)),IF(IFERROR(F4="",FALSE),"",F4),IF(IFERROR(F3="",FALSE),"",F3))))
MVP_PTS =IF($A3=1,"--",IF($A4=0,IF(IFERROR(G3="",FALSE),"",G3),IF(OR(IFERROR(G3="",FALSE),ISERROR(G3)),IF(IFERROR(G4="",FALSE),"",G4),IF(IFERROR(G3="",FALSE),"",G3))))
ENTRIES =IF($A3=1,"--",IF($A4=0,IF(IFERROR(H3="",FALSE),"",H3),IF(OR(IFERROR(H3="",FALSE),ISERROR(H3)),IF(IFERROR(H4="",FALSE),"",H4),IF(IFERROR(H3="",FALSE),"",H3))))
FORM =IF($A3=1,"--",IF($A4=0,IF(IFERROR(I3="",FALSE),"",I3),IF(OR(IFERROR(I3="",FALSE),ISERROR(I3)),IF(IFERROR(I4="",FALSE),"",I4),IF(IFERROR(I3="",FALSE),"",I3))))
PTS_CORRECT =IF($A3=1,"--",IF($A4=0,IF(IFERROR(J3="",FALSE),"",J3),IF(OR(IFERROR(J3="",FALSE),ISERROR(J3)),IF(IFERROR(J4="",FALSE),"",J4),IF(IFERROR(J3="",FALSE),"",J3))))
PTS_MISSED =IF($A3=1,"--",IF($A4=0,IF(IFERROR(K3="",FALSE),"",K3),IF(OR(IFERROR(K3="",FALSE),ISERROR(K3)),IF(IFERROR(K4="",FALSE),"",K4),IF(IFERROR(K3="",FALSE),"",K3))))
FINAL_PTS =IF($A3=1,"--",IF($A4=0,IF(IFERROR(L3="",FALSE),"",L3),IF(OR(IFERROR(L3="",FALSE),ISERROR(L3)),IF(IFERROR(L4="",FALSE),"",L4),IF(IFERROR(L3="",FALSE),"",L3))))
DR_ENTRIES =IF($A3=1,"--",IF($A4=0,IF(IFERROR(M3="",FALSE),"",M3),IF(OR(IFERROR(M3="",FALSE),ISERROR(M3)),IF(IFERROR(M4="",FALSE),"",M4),IF(IFERROR(M3="",FALSE),"",M3))))
SP_TALON =IF($A3=1,"--",IF($A4=0,IF(IFERROR(N3="",FALSE),"",N3),IF(OR(IFERROR(N3="",FALSE),ISERROR(N3)),IF(IFERROR(N4="",FALSE),"",N4),IF(IFERROR(N3="",FALSE),"",N3))))
WP_TALON =IF($A3=1,"--",IF($A4=0,IF(IFERROR(O3="",FALSE),"",O3),IF(OR(IFERROR(O3="",FALSE),ISERROR(O3)),IF(IFERROR(O4="",FALSE),"",O4),IF(IFERROR(O3="",FALSE),"",O3))))
BD =IF($A3=1,"--",IF($A4=0,IF(IFERROR(P3="",FALSE),"",P3),IF(OR(IFERROR(P3="",FALSE),ISERROR(P3)),IF(IFERROR(P4="",FALSE),"",P4),IF(IFERROR(P3="",FALSE),"",P3))))
DEPT =IF($A3=1,"--",IF($A4=0,IF(IFERROR(Q3="",FALSE),"",Q3),IF(OR(IFERROR(Q3="",FALSE),ISERROR(Q3)),IF(IFERROR(Q4="",FALSE),"",Q4),IF(IFERROR(Q3="",FALSE),"",Q3))))
EMPL =IF($A3=1,"--",IF($A4=0,IF(IFERROR(R3="",FALSE),"",R3),IF(OR(IFERROR(R3="",FALSE),ISERROR(R3)),IF(IFERROR(R4="",FALSE),"",R4),IF(IFERROR(R3="",FALSE),"",R3))))
NOTES =IF($A3=1,"--",IF($A4=0,IF(IFERROR(S3="",FALSE),"",S3),IF(OR(IFERROR(S3="",FALSE),ISERROR(S3)),IF(IFERROR(S4="",FALSE),"",S4),IF(IFERROR(S3="",FALSE),"",S3))))
DLR =IF($A3=1,"--",IF($A4=0,IF(IFERROR(T3="",FALSE),"",T3),IF(OR(IFERROR(T3="",FALSE),ISERROR(T3)),IF(IFERROR(T4="",FALSE),"",T4),IF(IFERROR(T3="",FALSE),"",T3))))