Jak znaleźć podłańcuch za pomocą VBA (9 sposobów)

  • Udostępnij To
Hugh West

Jeśli szukasz niektórych najprostszych sposobów, aby znaleźć podłańcuch za pomocą VBA, to jesteś we właściwym miejscu. Po przejściu przez ten artykuł, będziesz mógł znaleźć pozycję podłańcucha lub wyodrębnić dane za pomocą tego podłańcucha lub zmienić format podłańcucha łatwo. Przejdźmy do artykułu.

Pobierz Workbook

Przykładowa treść

9 sposobów na znalezienie podciągu przy użyciu VBA

Tutaj mam następującą tabelę danych, za pomocą której pokażę sposoby znajdowania podłańcuchów w łańcuchu za pomocą VBA. Spróbuję również pokazać sposoby znajdowania podłańcuchów w losowym ciągu.

Wykonałem to zadanie używając Microsoft Excel 365 wersja, możesz użyć dowolnej innej wersji w zależności od swojej wygody.

Metoda-1: Znajdowanie podłańcucha w łańcuchu za pomocą VBA

Jeśli chcesz znaleźć pożądany podłańcuch w łańcuchu za pomocą VBA, możesz użyć funkcja InStr w kodzie VBA.

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 FindFirst() Dim Pos As Integer Pos = InStr(1, "Myślę dlatego jestem", "myślę") MsgBox Pos End Sub 

Tutaj, InStr(1, "Myślę, więc jestem", "myślę") zwróci pozycję podłańcucha ciągu znaków. 1 to pozycja startowa, " Myślę, więc jestem" jest łańcuchem, w którym znajdziesz pożądany podłańcuch, a "myśleć" Domyślnie rozróżniana jest wielkość liter, więc uważaj na wielkość podłańcucha, który chcesz wyszukać.

➤Press F5

Wynik :

Po tym, otrzymasz następujące informacje Skrzynka wiadomości zawierający pozycję "myśleć" podciąg.

Metoda-2: Znajdowanie nieczułego na wielkość liter podciągu w łańcuchu.

Jeśli chcesz znaleźć pożądany podłańcuch w ciągu bez względu na przypadek za pomocą VBA, to postępuj zgodnie z tą metodą.

Krok-01 :

➤Follow Krok-01 z Metoda-1

 Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "Myślę dlatego jestem", "myślę",vbTextCompare) MsgBox Pos End Sub 

Tutaj, vbTextCompare służy do wyszukiwania podłańcuchów bez uwzględniania wielkości liter.

➤Press F5

Wynik :

Wówczas otrzymamy m.in. Skrzynka wiadomości zawierający pozycję "myśleć" podciąg.

Możesz zrobić to samo, używając następującego kodu.

 Option Compare Text Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "Myślę dlatego jestem", "think") MsgBox Pos End Sub 

Tutaj, Opcja Porównaj tekst znajdzie podłańcuch bez uwzględniania wielkości liter.

➤Press F5

Wynik :

Po tym, otrzymasz Skrzynka wiadomości zawierający pozycję "myśleć" podciąg.

Metoda-3: Użycie funkcji InstrRev w VBA

Tutaj pokażę sposób na znalezienie podciągu z końca ciągu.

Krok-01 :

➤Follow Krok-01 z Metoda-1

 Sub FindFromEnd() MsgBox InStrRev("Myślę dlatego jestem", "Ja") End Sub 

InStrRev znajdzie podłańcuch z prawej strony zamiast z lewej.

➤Press F5

Wynik :

Wówczas otrzymamy m.in. Skrzynka wiadomości zawierający pozycję drugiego "I" podłańcuch z prawej strony.

Metoda-4: Znajdowanie pozycji podłańcucha w łańcuchu w zakresie danych

Jeśli chcesz znaleźć znak specjalny "@" w Email Id to postępuj zgodnie z tą metodą. Dodałem tutaj Kolumna pozycyjna w tym celu.

Krok-01 :

➤Follow Krok-01 z Metoda-1

 Function FindSubstring(value As Range) As Integer Dim Pos As Integer Pos = InStr(1, value, "@") FindSubstring = Pos End Function 

Utworzy ona funkcję o nazwie FindSubstring (można użyć dowolnej innej nazwy)

wartość jest referencją do komórki zawierającej ciąg znaków i jest zadeklarowana jako Zakres .

Step-02 :

➤Wybierz wyjście Komórka E5

➤Typy funkcji (utworzonej przez VBA )

=FindSubstring(D5)

D5 to komórka, która zawiera ciąg znaków.

➤Press ENTER

➤Przeciągnij w dół Uchwyt do napełniania Narzędzie

Wynik :

Następnie otrzymamy pozycje znaku specjalnego " @" w Email Id .

Podobne Lektury:

  • Jak znaleźć ciąg w komórce za pomocą VBA w Excelu (2 metody)
  • FindNext Używanie VBA w Excelu (2 przykłady)
  • Jak znaleźć ciąg znaków za pomocą VBA w Excelu (8 przykładów)
  • VBA Znajdź ostatni wiersz w Excelu (5 sposobów)

Metoda-5: Sprawdzanie określonego podłańcucha w łańcuchu w zakresie danych

Załóżmy, że chcesz napisać Pass lub Nie odpowiadać do nazwisk uczniów w zależności od Kolumna wyników gdzie Pass lub Fail Aby znaleźć ten podłańcuch w Kolumna wyników i zapisz to w Kolumna zaliczenia lub odrzucenia zastosuj tę metodę.

Krok-01 :

➤Follow Krok-01 z Metoda-1

 Sub CheckSubstring() 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 = "Failed" 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ępna linia będzie kontynuowana 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 Nie udało się .

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

➤Press F5

Wynik :

Następnie otrzymasz następujące dane wyjściowe w Zdać czy nie zdać kolumna.

Metoda-6: Sprawdzanie określonego podłańcucha w łańcuchu i wyodrębnianie danych

Pokażę drogę do znalezienia uczniów o nazwach Michael w Kolumna Imię i nazwisko ucznia i wyodrębnić odpowiadające im dane za pomocą VBA w tej metodzie.

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), "Michał")> 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 ale możesz użyć dowolnego zakresu w zależności od zastosowania.

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

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 kolumn B do D .

➤Press F5

Wynik :

Po wykonaniu tych czynności otrzymamy następujące wyodrębnione dane dla uczniów o nazwie Michael .

Metoda-7: Wyszukiwanie podłańcuchów dla słowa

Jeśli chcesz znaleźć podłańcuch jako słowo, to postępuj zgodnie z tą metodą.

Krok-01 :

➤Follow Krok-01 z Metoda-1

 Sub Stringforword() Dim j As Integer j = InStr("Oto czym jestem", "jest") If j = 0 Then MsgBox "Słowo nie znalezione" Else MsgBox "Słowo znalezione na pozycji: " & j End If End Sub 

Sprawdzi, czy ciąg zawiera jest i wtedy jego pozycja będzie podana

➤Press F5

Wynik :

Następnie pojawi się następujące okno z komunikatem słowo znalezione w pozycji:6 (stanowisko jest ).

Możesz przetestować ten kod dla słowa, które nie jest w ciągu.

➤Wpisz następujący kod

 Sub Stringforword() Dim j As Integer j = InStr("Oto, czym jestem", "są") If j = 0 Then MsgBox "Słowo nie znalezione" Else MsgBox "Słowo znalezione na pozycji: " & j End If End Sub 

➤Press F5

Wynik :

Następnie pojawi się następujące okno z komunikatem słowo nie zostało znalezione .

Metoda-8: Użycie funkcji Instr i LEWO

Tutaj wyjaśnię, jak znaleźć pozycję podłańcucha w łańcuchu i wyodrębnić teksty przed tym podłańcuchem za pomocą VBA oraz funkcja LEWA .

Krok-01 :

➤Follow Krok-01 z Metoda-1

 Sub InstrandLeft() Dim txt As String Dim j As Long txt = "Oto czym jestem" j = InStr(txt, "jest") MsgBox Left(txt, j - 1) End Sub 

j = InStr(txt, "jest") jest pozycją podłańcucha jest oraz Left(txt, j - 1) wyodrębni podłańcuchy przed jest .

➤Press F5

Wynik :

Następnie pojawi się następujące okno z komunikatem Tutaj (podciąg przed jest ).

Metoda-9: Pogrubianie określonego podłańcucha w łańcuchu

Możesz pogrubić oceny przed nawiasami w Kolumna wyników poprzez zastosowanie tej metody.

Krok-01 :

➤Follow Krok-01 z Metoda-1

 Sub Boldingsubstring() Dim Cell As Range Dim txt As Integer For Each Cell In Selection txtCount = Len(Cell) txt = InStr(1, Cell, "(") Cell.Characters(1, txt - 1).Font.Bold = True Next Cell End Sub 

txt = InStr(1, Cell, "(") zwróci pozycję pierwszego nawiasu, a Cell.Characters(1, txt - 1).Font.Bold spowoduje, że podłańcuch przed pierwszym nawiasem stanie się podłańcuchem. Pogrubiona .

Step-02 :

➤Wybierz Kolumna wyników

➤Go to Deweloper Tab>> Makra Opcja

Następnie, a Makro Pojawi się kreator.

➤Select Pogrubienie podciągu (nazwa kodowa VBA), a następnie Uruchom .

Wynik :

Po tym czasie oceny w Wynik Kolumna zostanie pogrubiona.

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ę omówić najprostsze sposoby na znalezienie podciągu 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ł.