Jak najít řetězec pomocí VBA v aplikaci Excel (8 příkladů)

  • Sdílet Toto
Hugh West

Implementace VBA je nejefektivnější, nejrychlejší a nejbezpečnější metodou pro provádění jakýchkoli operací v Excelu. V tomto článku si ukážeme, jak najít určité řetězce v jiném zadaném řetězci s použitím VBA v aplikaci Excel.

Stáhnout šablonu pro praxi

Bezplatnou cvičnou šablonu Excel si můžete stáhnout zde.

VBA pro vyhledávání v řetězci String.xlsm

Funkce InStr

Microsoft Excel má vestavěnou funkci nazvanou funkce InStr k nalezení pozice konkrétních řetězců v daném řetězci.

Obecná syntaxe:

InStr([start], string1, string2, [compare])

Zde,

Argumenty Povinné/nepovinné Definice
začít Volitelně Počáteční pozice hledání.
  • Ve výchozím nastavení InStr Funkce počítá pozici znaku od 1, nikoliv od počáteční pozice. Pokud tedy chcete, můžete tuto položku ponechat prázdnou.
string1 Požadované Řetězec, ve kterém se má hledat, Primární řetězec.
string2 Požadované Řetězec, který se má hledat v primárním řetězci.
porovnat Volitelně Na stránkách InStr je ve výchozím nastavení rozlišována velká a malá písmena. InStr , pak zde můžete předat argument pro provedení určitého porovnání. Tento argument může nabývat následujících hodnot,
  • vbBinaryCompare -> provede binární porovnání, návratová hodnota 0
  • vbTextCompare -> provede porovnání textu, návratová hodnota 1
  • vbDatabaseCompare -> provede porovnání databáze, návratová hodnota 2

Ve výchozím nastavení, InStr bere vbBinaryCompare jako argument pro porovnání.

8 jednoduchých příkladů na vyhledání konkrétní pozice řetězce v daném řetězci pomocí VBA

Podívejme se na několik jednoduchých příkladů, jak získat pozice určitých řetězců v daném řetězci pomocí VBA .

1. VBA pro zjištění pozice textu v řetězci

Níže je uveden příklad InStr k nalezení pozice textu v řetězci.

  • Tisk Alt + F11 na klávesnici nebo přejděte na kartu Vývojář -> Visual Basic otevřít Editor jazyka Visual Basic .

  • Ve vyskakovacím okně kódu klikněte na panelu nabídek na možnost Insert -> Modul .

  • Nyní v okně kódu napište jednoduchý příkaz InStr program uvnitř Dílčí procedura VBA (viz níže).
 Sub INSTR_Example() MsgBox InStr("Štěstí je volba", "volba") End Sub 

Váš kód je nyní připraven ke spuštění.

  • Tisk F5 na klávesnici nebo na panelu nabídek vyberte možnost Run -> Run Sub/UserForm . Můžete také kliknout na malá ikona Play na panelu podnabídek spustíte makro.

Uvidíte, že vyskakovací okno se zprávou vám nabídne. číslo deklarující polohu textu, který chcete zkontrolovat.

Vysvětlení:

Náš primární řetězec " Štěstí je volba " je věta o 21 písmenech (s mezerami) a my jsme chtěli najít pozici textu " výběr " v tomto řetězci. Text " výběr " začínal na 16. pozici primárního řetězce, a proto jsme dostali číslo 16 jako náš výstup v poli zprávy.

2. VBA pro vyhledání textu z určité pozice v řetězci

Nyní zjistíme, co by se stalo, kdybychom chtěli získat pozici od určitého čísla.

  • Stejným způsobem jako dříve, otevřete Editor jazyka Visual Basic z Vývojář karta a Vložte a Modul v okně kódu.
  • V okně kódu napište jednoduchý příkaz InStr a v argumentu start předejte hodnotu podle pozice, od které chcete text počítat.
 Sub INSTR_Example() MsgBox InStr(17, "Štěstí je volba", "volba") End Sub 

  • Další, Spustit kód.

Uvidíte, že vyskakovací okno se zprávou vám nabídne číslo deklarující polohu textu začíná z určité pozice které jste chtěli zkontrolovat.

Vysvětlení:

Jak jsme již věděli (z diskuse v první fázi), text " výběr " začal z pozice 16 , takže jsme vložili dvě " výběr " v primárním řetězci a nastavte 17 jako náš 1. parametr, abychom přeskočili první " výběr ". Takže jsme Spustit výše uvedené makro a ukázalo nám to číslo pozice 27 což je přesně číslo pozice druhý " výběr " v daném řetězci.

3. VBA pro vyhledávání textu pomocí funkce InStr v řetězci s rozlišováním malých a velkých písmen

Od zavedení InStr již víte, že ve výchozím nastavení InStr Funkce rozlišuje malá a velká písmena. Zjistíme to na příkladu.

Viz následující VBA kód, kde jsme chtěli najít pozici slova " Volba " s velké "C" v řetězci " Štěstí je volba ", kde je volba napsána s malé "c" .

  • Spustit kód a najděte 0 jako náš výstup.

To proto, že InStr funkce zpracovává velké "C" a malé "c" jinak. Proto vyhledal slovo " Volba " v řetězci a nezískal žádnou shodu, takže vrátil 0 .

  • Chcete-li provést InStr funkce rozlišování velkých a malých písmen , nastavte argument compare na vbTextCompare (viz níže).
 Sub INSTR_Example() MsgBox InStr(1, "Štěstí je volba a výběr", "Volba", vbTextCompare) End Sub 

  • Spustit kód.

Získáte pozice textu z řetězce, ať už je text zapsán v jazyce velká nebo malá písmena .

4. VBA pro vyhledávání textu z pravé části řetězce

Až dosud InStr Funkce nám poskytovala pouze pozici z levé strany řetězce. Ale co když chcete zjistit pozici textu z pravé strany řetězce.

Funkce InStrRev vyhledává zprava. InStrRev funguje velmi podobně jako funkce InStr a najde vám pozici textu ze souboru pravá strana řetězce.

Rozdíl je uveden v následujících příkladech.

  • Pokud spustíme následující kód s InStr funkce pak,

nám dává polohu ( 16 ) prvního textu " výběr ".

  • Pokud však spustíme stejný kód s InStrRev Funkce pak,

nám dává polohu ( 27 ) posledního textu " výběr ".

Podobné čtení:

  • FindNext pomocí VBA v aplikaci Excel (2 příklady)
  • Jak najít a nahradit pomocí VBA (11 způsobů)
  • Hledání přesné shody pomocí VBA v aplikaci Excel (5 způsobů)

5. VBA pro zjištění pozice znaku v řetězci

Stejným způsobem jako text můžete zjistit i pozici určitého znaku v řetězci.

  • Zkopírujte následující kód do svého VBA kódové okno
 Sub Find_Character() Dim z As Long z = InStr("Štěstí je volba", "e") MsgBox z End Sub 

  • A Spustit makro.

První " e " v našem zadaném řetězci je na čísle 7 pozice.

6. VBA pro vyhledání podřetězce v řetězci

Zde se naučíme, jak zjistit, zda řetězec obsahuje podřetězec nebo ne.

Abychom toho dosáhli, musíme spustit Příkaz IF v našem kódu.

  • Stejným způsobem jako dříve, otevřete Editor jazyka Visual Basic z Vývojář karta a Vložte a Modul v okně kódu.
  • V okně kódu zkopírujte a vložte následující kód.
 Public Sub FindSub() If InStr("Štěstí je volba", "volba") = 0 Then MsgBox "Nenalezena shoda" Else MsgBox "Nalezena shoda" End If End Sub 

Váš kód je nyní připraven ke spuštění.

  • Spustit makro.

Pokud vaše řetězec obsahuje podřetězec pak získáte nalezena shoda , v opačném případě nevrátí žádnou nalezenou shodu. V našem příkladu jsme chtěli zjistit, zda náš primární řetězec " Štěstí je volba " obsahuje slovo " výběr " nebo ne. Jakmile se tak stane, dostaneme Nalezena shoda výsledek.

7. VBA pro vyhledání řetězce v rozsahu buněk

Můžete vyhledat určitý text v rozsahu buněk řetězce a vrátit určitý řetězec.

Podívejte se na následující příklad, kde najdeme " Dr. ", a když se najde shoda, vrátí se " Doktor ".

  • Níže je uveden kód pro získání výše uvedeného výsledku,
 Sub Find_String_in_Range() Dim cell As Range For Each cell In Range("B5:B10") If InStr(cell.Value, "Dr.")> 0 Then cell.Offset(0, 1).Value = "Doctor" End If Next cell End Sub 

  • Spustit kód a výsledek je uveden níže

  • Makro můžete upravit podle svých potřeb. Například pokud chcete najít " Prof. " v libovolné buňce řetězce a získáte " Profesor " jako návrat, pak jednoduše předejte " Prof. " jako hodnotu místo " Dr. ." ve 4. řádku makra a " Profesor " místo " Doktor " v 5. řádku makra a podle toho definujte číslo rozsahu buněk.

8. VBA pro vyhledání řetězce v buňce

Můžete také vyhledání určitého textu v jedné buňce řetězce a vrátit určitý řetězec.

  • Zkopírujte následující kód a vložte jej do okna kódu.
 Sub Find_String_in_Cell() If InStr(Range("B5").Value, "Dr.")> 0 Then Range("C5").Value = "Doctor" End If End Sub 

Vyhledá " Dr. " v Buňka B5 a pokud najde shodu, vrátí " Doktor " v Buňka C5 .

  • Makro můžete upravit podle svých potřeb. Například pokud chcete najít " Prof. " v libovolné buňce řetězce a získáte " Profesor " jako návrat, pak jednoduše předejte " Prof. " jako hodnotu místo " Dr. ." ve 2. řádku makra a " Profesor " místo " Doktor " ve 3. řádku makra a podle toho definujte referenční číslo buňky.

Závěr

Tento článek vám ukázal, jak v aplikaci Excel najít určité texty v řetězci pomocí Makro VBA. Doufám, že pro vás byl tento článek velmi přínosný. Neváhejte se zeptat na jakékoli otázky týkající se tohoto tématu.

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.