Obsah
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 obsahu9 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.