Mam arkusz kalkulacyjny Excel 2007 z 2250 wierszami i 19 kolumnami. W tych wierszach mogę mieć dwa wiersze zduplikowanych informacji o klientach, które należy połączyć, ale tylko wtedy, gdy komórka powyżej jest pusta. Mogę również mieć wiersze danych klientów, które nie wymagają łączenia. Unikalny numer członka klienta można wykorzystać do identyfikacji wierszy, które należy połączyć. Mam problem z opracowaniem odpowiedniego skryptu VBA, aby połączyć unikalne dane klienta w jednym wierszu (na górze) i usunąć wiersz, który pozostał po połączeniu. Czy ktoś chce pomóc? Zaoszczędzi mi to wiele godzin / dni ręcznego łączenia tych wierszy, a my jesteśmy w trakcie audytu wrażliwego na czas.
Próbka naszych danych:
PIERWSZA NAZWA CZŁONKA CZŁONKOWSKA NAZWA CZŁONEK # MVP SYSTEM DATA WEJŚCIA DATA ZAREJESTRUJ PUNKTY MVP ZGŁOSZENIA ZGŁOSZENIA FORMULARZ? PUNKTY PRAWIDŁOWE? PUNKTY BRAKOWANE PUNKTY KOŃCOWE RYSUNKI WPIS SP Talon # WP Talon # BD DEPT PRACODAWCY UWAGI DLR Gene S 550061 3/2/2013 0 0 0 # Nie dotyczy Gene S 550061 3/2/2013 1539 137 MC MJ SP Steve G 550087 3/2/2013 30019 1588 PA NR WP Curtis S 550128 24.04.2013 5 0 5 # Nie dotyczy Curt S 550128 24.04.2013 358 47 MC MJ SP
Edytuj (nie z OP), aby dodać wersję rozdzielaną potokiem / akapitem z podkreśleniami spacji w nagłówkach:
MEMBER_FIRST_NAME | MEMBER_LAST_NAME | MEMBER_ # | MVP_SYSTEM_ENTRY_DATE | ENROLL_DATE | MVP_POINTS | DRAWING_ENTRIES | ENROLL_FORM |? POINTS_CORRECT |? POINTS_MISSED | FINAL_POINTS | DRAWING_ENTRIES | SP_Talon_ # | WP_Talon_ # | BD | DEPT | pracownika | UWAGI | DLR
Gene | S | 550061 | 03 / 02/2013 || 0 | 0 |||| 0 | # Nie dotyczy |||||||
Gen | S | 550061 || 03/02/2013 |||||||| 1539 | 137 || MC | MJ || SP
Steve | G | 550087 || 03/02/2013 || | 30019 | 1588 || PA | NR || WP
Curtis | S | 550128 | 4/24/2013 || 5 | 0 |||| 5 | # Nie dotyczy |||||||
Curt | S | 550128 || 24.04.2013 |||||||| 358 | 47 || MC | MJ || SP
źródło
Odpowiedzi:
Nie jestem zbyt pewien udzielonych wyjaśnień, ale i tak tu jest !:
Kluczowa kwestia - w poniższym założeniu zakłada się, że w ramach CZŁONKA # MVP DATA WEJŚCIA DO SYSTEMU będzie zawsze wyświetlana powyżej DATY REJESTRACJI
Dla bezpieczeństwa pracy na kopii i dodać numer indeksu dla każdego wiersza (słownie wstawić
ColumnA
, umieścić1
wA1
,=A1+1
wA2
i skopiować formułę do Row2250. KopiujColumnA
i Wklej specjalnie / wartości w górę.Wybierz
D2
, Strona główna> Style - formatowanie warunkowe, Nowa reguła, Użyj formuły, aby określić, które komórki mają zostać sformatowane, Sformatuj wartości tam, gdzie ta formuła jest prawdziwa: wstaw=AND(NOT(ISBLANK(D2)),OR(D1=D2,D2=D3))
, Formatuj, Wypełnij, wybierz żółty, OK, OK. W Formatowanie warunkowe - Zarządzaj regułami, w Stosuje się do wprowadzenia=$D$2:$D$2250
, Zastosuj. DOBRZE.Wybierz cały arkusz kalkulacyjny (kliknij trójkąt po lewej stronie A i powyżej 1 w Nagłówkach), Dane> Sortuj i filtruj - Filtr, a dla
ColumnD
Filtruj według koloru wybierz żółty.Skopiuj wiersz 1 w dół do ostatniego wiersza numerowanego na niebiesko i wklej do
A1
innego arkusza (powiedzmy arkusz 2).W arkuszu 2 usuń
F1
, przesuń komórki w górę, OK. RównieżN1:T1
. (W tym przypadku może być wymagane dodatkowe oczy).Dodaj nowy
ColumnA
do arkusza 2. Umieścić1
wA1
,2
wA2
, wybierzA1:A2
, chwycić dolną prawym rogu zaznaczenia, trzymać wciśnięty lewy przycisk myszy podczas przeciągania w dół o ile wymagane, a dopiero po naciśnięciu i przytrzymaniu Ctrl.Wybierz Arkusz2, Dane> Sortuj i filtruj - Sortuj, zaznacz Moje dane mają nagłówki, Sortuj według
ColumnA
(pierwszy z nich1
!), Sortuj według wartości, Sortuj od najmniejszej do największej, OK.Uwaga najniższy numer wiersza, który zawiera
2
wColumnA
sheet2 oraz liczbę najwyższej okupowanej rzędu. UsuńColumnA
.Wróć do pierwszego arkusza i usuń wszystkie wiersze zawierające żółte podświetlenie.
W Arkuszu 2 wybierz niższy numer wiersza i wszystkie inne zajęte wiersze z wyższą liczbą kopii i wklej z powrotem do
ColumnA
dolnej części pierwszego arkusza.Mam nadzieję, że osiągnie to, czego potrzebujesz - a jeśli nie, to „krok we właściwym kierunku”! Aby to sprawdzić, twój ostatni zajęty rząd powinien teraz wynosić 2250 + 1 minus różnica między dwiema liczbami wymienionymi powyżej.
Aby sprawdzić MEMBER FIRST NAME, sugeruję utworzenie tabeli przeglądowej MEMBER # i tamtej, a następnie porównanie MEMBER FIRST NAME na tej podstawie w arkuszu, którego kopię wykonałeś. Curt lub Curtis to prawdopodobnie wyrok sądu.
źródło
Oto inne możliwe podejście. To zależy od trzech warunków:
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).
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
źródło