Jak znaleźć dokładne dopasowanie za pomocą VBA w Excelu (5 sposobów)

  • Udostępnij To
Hugh West

Jeśli szukasz kilku najprostszych sposobów na znalezienie dokładnego dopasowania przy użyciu VBA , to przyda Ci się ten artykuł. Zacznijmy więc od artykułu i poznajmy sposoby na znalezienie dokładnego dopasowania.

Pobierz Workbook

VBA Znajdź dokładne dopasowanie.xlsm

5 sposobów na znalezienie dokładnego dopasowania przy użyciu VBA

Użyłem następującej tabeli, która ma zapisy wyników niektórych studentów. Wyjaśnię różne sposoby znalezienia dokładnego dopasowania za pomocą tej tabeli z pomocą VBA.

Do tego celu użyłem wersji Microsoft Excel 365, można użyć dowolnych innych wersji w zależności od wygody.

Metoda-1: Znajdowanie dokładnego dopasowania w zakresie komórek

Jeśli chcesz znaleźć dokładne dopasowanie łańcucha, takiego jak nazwa ucznia, a następnie znaleźć pozycję komórki tego ucznia, to możesz to zrobić, postępując zgodnie z tą metodą.

Tutaj zamierzam znaleźć dokładne dopasowanie dla ucznia o nazwie "Joseph Micahel" .

Krok-01 :

➤Go to Deweloper Tab>> Visual Basic Opcja

Następnie. Edytor Visual Basic otworzy się.

➤Go to Wkładka Tab>> Moduł Opcja

Po tym, a Moduł zostanie utworzony.

Step-02 :

➤ Napisz następujący kod

 Sub searchtxt() Dim rng As Range Dim str As String Set rng = Sheets("exact match").Range("B5:B10").Find("Józef Michał", LookIn:=xlValues) If Not rng Is Nothing Then str = rng.Address MsgBox (rng & " in " & str) End If End Sub. 

Tutaj, "exact match" jest nazwą arkusza, a "B5:B10" to zakres nazwisk uczniów, a "Józef Michał" to imię i nazwisko ucznia, które ma być odkryte.

rng jest zadeklarowany jako obiekt zakresu i str jako zmienna łańcuchowa przechowująca adres poszukiwanego elementu.

Na stronie JEŚLI instrukcja przypisze adres elementu do str zmienny.

➤Press F5

Wynik :

Po tym, otrzymasz następujące informacje Skrzynka wiadomości zawierający pozycję komórki ucznia o nazwie "Józef Michał" .

Czytaj więcej: Znajdź w zakresie za pomocą VBA w Excelu: Włączając dokładne i częściowe dopasowanie

Metoda-2: Znalezienie dokładnego dopasowania i zastąpienie go przy użyciu VBA

Pokażę sposób na odnalezienie wskazanego nazwiska ucznia, a następnie zastąpienie go innym nazwiskiem, bo jakoś omyłkowo to nazwisko zostało tu wpisane.Można znajdź swój pożądany ciąg i zastąp go poprzez zastosowanie tej metody.

Krok-01 :

➤Follow Krok-01 z Metoda-1

 Sub FindandReplace() Dim rng As Range Dim str As String With Worksheets("find&replace").Range("B5:B10") Set rng = .Find("Donald Paul", LookIn:=xlValues) If Not rng Is Nothing Then str = rng.Address Do rng.Value = Replace(rng.Value, "Donald Paul", "Henry Jackson") Set rng = .FindNext(rng) Loop While Not rng Is Nothing End If End With End Sub. 

Tutaj, "find&replace" jest nazwą arkusza, a "B5:B10" to zakres nazwisk uczniów, a "Donald Paweł" to imię i nazwisko ucznia, które należy poznać, a następnie "Henry Jackson" będzie nazwą ucznia zamiast dotychczasowej.

Z oświadczenie pozwoli uniknąć powtórzenia fragmentu kodu w każdym oświadczeniu.

Na stronie JEŚLI instrukcja przypisze adres elementu do str zmienna i DO pętla zastąpi wszystkie wystąpienia szukanego słowa.

➤Press F5

Wynik :

Po tym, otrzymasz nazwę nowego ucznia jako "Henry Jackson" .

Metoda-3: Znajdowanie dokładnego i wrażliwego na wielkość liter dopasowania

Jeśli chcesz znaleźć dopasowanie wrażliwe na wielkość liter, a następnie postępuj zgodnie z tą metodą. Tutaj mam dwie nazwy podobne do siebie, ale istnieje różnica w przypadku i w zależności od przypadku zastąpię ostatnie nazwisko studenta.

Krok-01 :

➤Follow Krok-01 z Metoda-1

 Sub exactmatch() Dim rng As Range Dim str As String With Worksheets("case-sensitive").Range("B5:B10") Set rng = .Find("Donald Paul", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True) If Not rng Is Nothing Then str = rng.Address Do rng.Value = Replace(rng.Value, "Donald Paul", "Henry Jackson") Set rng = .FindNext(rng) Loop While Not rng Is Nothing End If End With End.Sub 

Tutaj, "case-sensitive" jest nazwą arkusza, a "B5:B10" to zakres nazwisk uczniów, a "Donald Paweł" to imię i nazwisko ucznia, które należy poznać, a następnie "Henry Jackson" będzie nazwą ucznia zamiast dotychczasowej.

Z oświadczenie pozwoli uniknąć powtórzenia fragmentu kodu w każdym oświadczeniu.

Na stronie JEŚLI instrukcja przypisze adres elementu do str zmienna i DO pętla zastąpi wszystkie wystąpienia szukanego słowa.

➤Press F5

Wynik :

Teraz, zgodnie ze sprawą, nazwisko ucznia zostanie zmienione na. "Henry Jackson" .

Podobne Lektury:

  • Jak znaleźć ciąg w komórce za pomocą VBA w Excelu (2 metody)
  • VBA Znajdź w kolumnie w Excelu (7 podejść)
  • Jak znaleźć ciąg z VBA w Excelu (8 przykładów)

Metoda-4: Użycie funkcji InStr

Załóżmy, że chcesz dopasować Pass lub Nie odpowiadać do nazwisk uczniów w zależności od Kolumna wyników gdzie Pass lub Fail Aby znaleźć ten ciąg w Kolumna wyników i zapisz "Passed" w Kolumna stanu dla studentów, którzy zdali egzamin, można użyć funkcja InStr .

Krok-01 :

➤Follow Krok-01 z Metoda-1

 Sub Checkstring() Dim cell As Range For Each cell In Range("C5:C10") If InStr(cell.Value, "Pass")> 0 Then cell.Offset(0, 1).Value = "Passed" Else cell.Offset(0, 1).Value = " " End If Next cell End Sub 

Tutaj zakres komórek to. C5:C10 który jest Kolumna wyników

InStr(cell. value, "Pass")> 0 to warunek, w którym liczba jest większa od zera (gdy komórka zawiera "Pass" ) to następny wiersz będzie kontynuowany i poda wyjście w sąsiedniej komórce jako Pozytywnie oceniony .

Jeśli warunek stanie się fałszywy, oznacza to, że komórka nie zawiera żadnego "Pass" to linia pod ELSE zostanie wykonana i da wartość wyjściową w sąsiedniej komórce jako Pusty .

Ta pętla będzie kontynuowana dla każdej komórki.

➤Press F5

Wynik :

Wtedy dostaniesz "Passed" status dla studentów, którzy zaliczyli.

Metoda-5: Znajdź Dokładne dopasowanie i wyodrębnij dane

Jeśli chcesz wyodrębnić odpowiednie dane dla ucznia o nazwie "Michał Jakub" to możesz zastosować tę metodę.

Krok-01 :

➤Follow Krok-01 z Metoda-1

 Sub Extractdata() Dim lastusedrow As Long Dim i As Integer, icount As Integer lastusedrow = ActiveSheet.Range("B100").End(xlUp).Row For i = 1 To lastusedrow If InStr(1, Range("B" & i), "Michael James")> 0 Then icount = icount + 1 Range("E" & icount & ":G" & icount) = Range("B" & i & ":D" & i).Value End If Next i End Sub 

Tutaj użyłem B100 jako Aktywny zakres arkuszy (można użyć dowolnego zakresu w zależności od zastosowania).

InStr(1, Range("B" & i), "Michael James")> 0 jest warunkiem sprawdzenia, czy komórka w kolumnie B zawiera Michael James .

Range("E" & icount & ":G" & icount) to zakres, w którym mają się znaleźć dane wyjściowe, a Range("B" & i & ":D" & i).value poda wartości z kolumny B do D .

➤Press F5

Wynik :

Następnie otrzymasz następujące wyodrębnione dane dla uczniów o nazwie Michael James .

Część ćwiczeniowa

Do samodzielnego wykonywania ćwiczeń udostępniliśmy Praktyka sekcja jak poniżej w arkuszu o nazwie Praktyka . Proszę, zrób to sam.

Wniosek

W tym artykule, starałem się pokryć najprostsze sposoby na znalezienie dokładnego dopasowania przy użyciu VBA w Excelu efektywnie. Mam nadzieję, że uznasz to za przydatne. Jeśli masz jakieś sugestie lub pytania, nie krępuj się podzielić nimi z nami.

Hugh West jest bardzo doświadczonym trenerem i analitykiem Excela z ponad 10-letnim doświadczeniem w branży. Posiada tytuł licencjata w dziedzinie rachunkowości i finansów oraz tytuł magistra administracji biznesowej. Hugh ma pasję do nauczania i opracował unikalne podejście do nauczania, które jest łatwe do naśladowania i zrozumienia. Jego specjalistyczna wiedza na temat programu Excel pomogła tysiącom studentów i profesjonalistów na całym świecie doskonalić swoje umiejętności i osiągać doskonałe wyniki w karierze. Za pośrednictwem swojego bloga Hugh dzieli się swoją wiedzą ze światem, oferując bezpłatne samouczki programu Excel i szkolenia online, aby pomóc osobom indywidualnym i firmom w pełni wykorzystać swój potencjał.