Porównaj kolumny 2 za pomocą VBA w programie Microsoft Excel

Anonim

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