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