Jak najít podřetězec pomocí VBA (9 způsobů)

  • Sdílet Toto
Hugh West

Pokud hledáte některý z nejjednodušších způsobů, jak najít podřetězec pomocí VBA, pak jste na správném místě. Po projití tohoto článku budete schopni snadno najít pozici podřetězce nebo extrahovat data pomocí tohoto podřetězce nebo změnit formát podřetězce. Pojďme se pustit do článku.

Stáhnout pracovní sešit

Ukázka obsahu

9 způsobů vyhledávání podřetězců pomocí VBA

Zde mám následující datovou tabulku, pomocí které ukážu způsoby hledání podřetězce v řetězci pomocí VBA. Pokusím se také ukázat způsoby hledání podřetězce v náhodném řetězci.

Tento úkol jsem provedl pomocí Microsoft Excel 365 verzi, můžete použít jakoukoli jinou verzi podle toho, jak vám to vyhovuje.

Metoda 1: Vyhledání podřetězce v řetězci pomocí VBA

Pokud chcete najít požadovaný podřetězec v řetězci pomocí VBA, můžete použít následující příkaz. funkce InStr v kódu VBA.

Krok-01 :

➤Přejít na Vývojář Tab>> Visual Basic Možnost

Poté se Editor jazyka Visual Basic se otevře.

➤Přejít na Vložte Tab>> Modul Možnost

Poté se Modul bude vytvořen.

Krok-02 :

➤Napsat následující kód

 Sub FindFirst() Dim Pos As Integer Pos = InStr(1, "Myslím, tedy jsem", "myslím") MsgBox Pos End Sub 

Zde, InStr(1, "Myslím, tedy jsem", "myslím") vrátí pozici podřetězce řetězce. 1 je výchozí pozice, " Myslím, tedy jsem" je řetězec, ve kterém najdete požadovaný podřetězec, a "myslet" je podřetězec, který chcete vyhledat. Ve výchozím nastavení se rozlišují malá a velká písmena, takže si dejte pozor na velikost písmen podřetězce, který chcete vyhledat.

➤Press F5

Výsledek :

Poté získáte následující informace Pole pro zprávy obsahující polohu "myslet" podřetězec.

Metoda-2: Vyhledání podřetězce v řetězci s rozlišováním malých a velkých písmen

Pokud chcete pomocí VBA najít požadovaný podřetězec v řetězci bez ohledu na velikost písmen, použijte tuto metodu.

Krok-01 :

➤Sledovat Krok-01 z Metoda-1

 Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "I Think Therefore I Am", "think",vbTextCompare) MsgBox Pos End Sub 

Zde, vbTextCompare se používá k vyhledání podřetězce bez rozlišení velikosti písmen.

➤Press F5

Výsledek :

Pak získáte následující informace Pole pro zprávy obsahující polohu "myslet" podřetězec.

Totéž můžete provést pomocí následujícího kódu.

 Option Porovnat text Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "I Think Therefore I Am", "think") MsgBox Pos End Sub 

Zde, Možnost Porovnat text najde podřetězec nerozlišující velká a malá písmena.

➤Press F5

Výsledek :

Poté získáte následující informace Pole pro zprávy obsahující polohu "myslet" podřetězec.

Metoda-3: Použití funkce InstrRev ve VBA

Zde ukážu způsob, jak najít podřetězec od konce řetězce.

Krok-01 :

➤Sledovat Krok-01 z Metoda-1

 Sub FindFromEnd() MsgBox InStrRev("Myslím, tedy jsem", "I") End Sub 

InStrRev najde podřetězec z pravé strany místo z levé strany.

➤Press F5

Výsledek :

Pak získáte následující informace Pole pro zprávy obsahující polohu druhého "I" podřetězce z pravé strany.

Metoda-4: Zjištění pozice podřetězce v řetězci v rozsahu dat

Pokud chcete najít speciální znak "@" v E-mailová adresa , pak postupujte podle této metody. Zde jsem přidal. Sloupec polohy pro tento účel.

Krok-01 :

➤Sledovat Krok-01 z Metoda-1

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

Vytvoří funkci s názvem FindSubstring (můžete použít jakýkoli jiný název)

hodnota je odkaz na buňku, která obsahuje řetězec, a je deklarována jako Rozsah .

Krok-02 :

➤Zvolte výstup Buňka E5

➤Zadejte následující funkci (vytvořenou pomocí VBA )

=FindSubstring(D5)

D5 je buňka, která obsahuje řetězec.

➤Press ENTER

➤Přetáhněte dolů Plnicí rukojeť Nástroj

Výsledek :

Poté se zobrazí pozice speciálního znaku. " @" v E-mailová adresa .

Podobné čtení:

  • Jak najít řetězec v buňce pomocí VBA v aplikaci Excel (2 metody)
  • FindNext pomocí VBA v aplikaci Excel (2 příklady)
  • Jak najít řetězec pomocí VBA v aplikaci Excel (8 příkladů)
  • Vyhledání posledního řádku v aplikaci Excel pomocí VBA (5 způsobů)

Metoda-5: Kontrola určitého podřetězce v řetězci v rozsahu dat

Předpokládejme, že chcete napsat Předat nebo Neodpovídá ke jménům studentů v závislosti na Sloupec výsledků kde Předat nebo Selhání byl zapsán v závorce. Chcete-li tento podřetězec nalézt v řetězci Sloupec výsledků a zapište ji do Sloupec vyhověl nebo nevyhověl postupujte podle této metody.

Krok-01 :

➤Sledovat 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 

Zde je rozsah buněk C5:C10 což je Sloupec výsledků

InStr(cell.value, "Pass")> 0 je podmínka, kdy je číslo větší než nula (když buňka obsahuje "Pass" ), pak bude následující řádek pokračovat a ve vedlejší buňce se zobrazí výstup ve tvaru Prošlo .

Pokud se podmínka stane nepravdivou, znamená to, že buňka neobsahuje žádné "Pass" pak řádek pod Jinak se provede a poskytne výstupní hodnotu v sousední buňce jako Neúspěšný .

Tato smyčka bude pokračovat pro každou buňku.

➤Press F5

Výsledek :

Pak se v okně Vyhověl nebo nevyhověl sloupec.

Metoda-6: Kontrola určitého podřetězce v řetězci a extrakce dat

Ukážu vám, jak najít studenty se jmény. Michael v Sloupec Jméno studenta a extrahovat jejich odpovídající data pomocí VBA v této metodě.

Krok-01 :

➤Sledovat 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")> 0 Then icount = icount + 1 Range("E" & icount & ":G" & icount) = Range("B" & i & ":D" & i).value End If Next i End Sub 

Zde jsem použil B100 jako Rozsah aktivních listů ale můžete použít libovolný rozsah podle svého použití.

InStr(1, Range("B" & i), "Michael")> 0 je podmínka pro kontrolu, zda buňka ve sloupci B obsahuje Michael

Range("E" & icount & ":G" & icount) je rozsah, ve kterém chcete mít výstupní data, a Range("B" & i & ":D" & i).value poskytne hodnoty ze sloupců B na D .

➤Press F5

Výsledek :

Poté získáte následující extrahované údaje pro studenty s daným jménem. Michael .

Metoda-7: Hledání podřetězce pro slovo

Pokud chcete najít podřetězec jako slovo, postupujte podle této metody.

Krok-01 :

➤Sledovat Krok-01 z Metoda-1

 Sub Stringforword() Dim j As Integer j = InStr("Zde je to, co jsem", "je") If j = 0 Then MsgBox "Slovo nenalezeno" Else MsgBox "Slovo nalezeno na pozici: " & j End If End Sub 

Zjistí, zda řetězec obsahuje je a poté bude uvedena jeho poloha

➤Press F5

Výsledek :

Poté se zobrazí následující okno se zprávou, ve které se zobrazí. slovo nalezeno v pozici: 6 (pozice je ).

Tento kód můžete vyzkoušet pro slovo, které se v řetězci nenachází.

➤Zadejte následující kód

 Sub Stringforword() Dim j As Integer j = InStr("Zde je to, co jsem", "jsou") If j = 0 Then MsgBox "Slovo nenalezeno" Else MsgBox "Slovo nalezeno na pozici: " & j End If End Sub 

➤Press F5

Výsledek :

Poté se zobrazí následující okno se zprávou, ve které se zobrazí. slovo nebylo nalezeno .

Metoda-8: Použití funkce Instr a LEFT

Zde vysvětlím způsob, jak najít pozici podřetězce v řetězci a extrahovat texty před tímto podřetězcem pomocí příkazu VBA a funkce LEFT .

Krok-01 :

➤Sledovat Krok-01 z Metoda-1

 Sub InstrandLeft() Dim txt As String Dim j As Long txt = "Tady jsem" j = InStr(txt, "je") MsgBox Left(txt, j - 1) End Sub 

j = InStr(txt, "is") je pozice podřetězce je a Vlevo(txt, j - 1) extrahuje podřetězce před je .

➤Press F5

Výsledek :

Poté se zobrazí následující okno se zprávou Zde (podřetězec před je ).

Metoda-9: Tučné zvýraznění určitého podřetězce v řetězci

Známky před závorkami můžete zvýraznit tučným písmem v položce Sloupec výsledků podle této metody.

Krok-01 :

➤Sledovat 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, "(") vrátí pozici první závorky a Cell.Characters(1, txt - 1).Font.Bold vytvoří podřetězec před první závorkou Odvážný .

Krok-02 :

➤Zvolte Sloupec výsledků

➤Přejít na Vývojář Tab>> Makra Možnost

Pak a Makro zobrazí se průvodce.

➤Vybrat Tučný podřetězec (kódový název VBA) a potom Spustit .

Výsledek :

Poté se známky v Výsledek Sloupec budou zvýrazněny tučně.

Praktická část

Pro samostatné cvičení jsme připravili Cvičení sekce jako níže v listu s názvem Cvičení . Udělejte to prosím sami.

Závěr

V tomto článku jsem se pokusil popsat nejjednodušší způsoby, jak najít podřetězec pomocí VBA v Excelu efektivně. Doufám, že vám bude užitečný. Pokud máte nějaké návrhy nebo dotazy, neváhejte se s námi o ně podělit.

Hugh West je velmi zkušený školitel a analytik Excelu s více než 10 lety zkušeností v oboru. Má bakalářský titul v oboru Účetnictví a finance a magisterský titul v oboru Business Administration. Hugh má vášeň pro výuku a vyvinul jedinečný přístup k výuce, který lze snadno sledovat a pochopit. Jeho odborné znalosti Excelu pomohly tisícům studentů a profesionálů po celém světě zlepšit své dovednosti a vyniknout ve své kariéře. Prostřednictvím svého blogu Hugh sdílí své znalosti se světem a nabízí bezplatné výukové programy Excelu a online školení, které jednotlivcům a firmám pomohou dosáhnout jejich plného potenciálu.