Jeśli zastanawiasz się, jak porównać 2 kolumny danych z wierszami w milionach i wyodrębnić unikalne wartości z obu kolumn, powinieneś przeczytać ten artykuł. Użyjemy kodu VBA, aby porównać dwie kolumny danych i pokazać różnicę w kolejnych dwóch kolumnach.
Pytanie: W kolumnach A i B istnieje wiele wartości. Chcę, aby makro sprawdziło ponad 40 tys. wierszy danych w obu kolumnach, a następnie wyodrębniło listę unikalnych wpisów z każdej kolumny do następnej kolumny, tj. kolumn C i D odpowiednio. W tym przykładzie biorę tylko 40 wierszy przykładowych danych.
Tutaj znajdziesz oryginalne pytanie
Poniżej znajduje się migawka danych:
Aby porównać listę dwóch kolumn, musimy wykonać poniższe kroki, aby uruchomić edytor VB:
- Kliknij kartę Deweloper
- Z grupy Kod wybierz Visual Basic
- Skopiuj poniższy kod w standardowym module
Sub PullUniques() Dim rngCell As Range dla każdej komórki rngCell w zakresie("A2:A40") If WorksheetFunction.CountIf(Range("B2:B40"), rngCell) = 0 Then Range("C" & Rows.Count). End(xlUp).Offset(1) = rngCell End If Next For Each rngCell In Range("B2:B40") If WorksheetFunction.CountIf(Range("A2:A40"), rngCell) = 0 Then Range("D" & Rows.Count).End(xlUp).Offset(1) = rngCell End If Next End Sub
- Powyższe makro jest gotowe do uruchomienia; albo możemy nacisnąć klawisz F5 -jeśli jesteś aktualnie na ekranie Edytora Visual Basic -albo możemy użyć klawiszy skrótu „ALT + F8”, wybierz swoje makro i kliknij przycisk Uruchom
- Unikalna lista z kolumn A i B zostanie wygenerowana automatycznie w kolumnach C i D
Wyjaśnienie kodu:
W powyższym kodzie użyjemy funkcji IF wraz z pętlą For, aby uzyskać wynik.
- Deklarujemy Dim rngCell jako zakres; celem deklarowania rngCell As Range jest przypisanie zakresu próbki „A2:A40” o określonej nazwie, np. „rngCell” w naszym przykładzie
- Dla każdej komórki rngCell w zakresie("A2:A40"); sprawdzimy dla każdej komórki w „rngCell” z warunkiem
- If WorksheetFunction.CountIf(Range("B2:B40"), rngCell) = 0 Wtedy; ta linia kodu używa funkcji LICZ.JEŻELI VBA do sprawdzenia zakresu kryteriów B2:B40 z kryteriami rngCell równymi zero, następnie w kolumnie C zostanie zapisana wartość przechowywana w rngCell
- Podobnie, uruchomimy For Each Loop dla kolumny B i wyodrębnimy unikalne wartości w kolumnie D
Wniosek: Możemy uzyskać unikalną listę tekstu lub wartości z każdej kolumny; nazwa nagłówka kolumny C (Wyniki - Istnieje na Liście 1, ale nie na Liście 2) i kolumny D (Wyniki - Istnieje na Liście 2, ale nie na Liście 1). W przypadku, gdy mamy podobne wymagania, ale liczba kolumn jest większa niż dwie, musimy poprawić kod, aby uzyskać wynik.
Jeśli podobały Ci się nasze blogi, podziel się nimi ze znajomymi na Facebooku. A także możesz śledzić nas na Twitterze i Facebooku.
Chcielibyśmy usłyszeć od Ciebie, daj nam znać, jak możemy ulepszyć, uzupełnić lub unowocześnić naszą pracę i uczynić ją lepszą dla Ciebie. Napisz do nas na witryna e-mail