Spis treści
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.xlsm5 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.