Kontrola řetězce v Excelu pomocí VBA, zda obsahuje jiný řetězec (6 metod)

  • 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 v Excelu zkontrolovat, zda řetězec obsahuje jiný řetězec, pomocí funkce VBA .

Stáhnout šablonu pro praxi

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

VBA pro kontrolu, zda řetězec obsahuje hodnotu.xlsm

6 metod VBA pro kontrolu, zda řetězec obsahuje jiný řetězec v aplikaci Excel

Níže v této části naleznete 6 účinných metod, jak implementovat VBA ke kontrole, zda řetězec obsahuje jiný řetězec, nebo ne.

1. VBA pro kontrolu, zda řetězec obsahuje podřetězec

Níže je uveden příklad funkce InStr zjistit, zda řetězec obsahuje podřetězec v aplikaci Excel.

Kroky:

  • 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 .

  • V okně kódu zkopírujte a vložte následující kód.
 Public Sub ContainSub() If InStr("Film: Iron Man, Batman, Superman, Spiderman, Thor", "Hulk")> 0 Then MsgBox "Movie found" Else MsgBox "Movie not found" 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 se zobrazí nalezená shoda, v opačném případě se nevrátí žádná nalezená shoda.

V našem příkladu jsme chtěli zjistit, zda náš primární řetězec " Filmy: Iron Man, Batman, Superman, Spiderman, Thor " obsahuje slovo " Hulk " nebo ne. Protože ne, dostaneme Film nebyl nalezen výsledek.

2. VBA pro kontrolu, zda řetězec obsahuje číslo

Můžete vyhledat, zda řetězce obsahují čísla, nebo ne, pomocí příkazu VBA kód.

Podívejte se na následující příklad, kde zjistíme, které řetězce obsahují čísla s názvy filmů.

Kroky pro kontrolu, zda řetězce obsahují čísla s VBA jsou uvedeny níže.

Kroky:

  • 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.
 Function SearchNumbers(oRng As Range) As Boolean Dim bSearchNumbers As Boolean, i As Long bSearchNumbers = False For i = 1 To Len(oRng.Text) If IsNumeric(Mid(oRng.Text, i, 1)) Then bSearchNumbers = True Exit For End If Next SearchNumbers = bSearchNumbers End Function 
  • Toto není dílčí postup pro VBA spustit program, čímž se vytvoří Funkce definovaná uživatelem (UDF), který zavoláme v našem pracovním listu, aby se úloha provedla. Takže po napsání kódu místo kliknutí na tlačítko Spustit klikněte na tlačítko Uložit na panelu nabídek, abyste soubor makra uložili.
  • Nyní se vraťte na pracovní list, který vás zajímá, a zapište uživatelsky definovanou funkci, kterou jste právě vytvořili, do pole VBA kód ( SearchNumber , v prvním řádku kódu) a uvnitř závorek funkce zadejte referenční číslo buňky řetězce, která má počáteční čísla (např. Buňka B5 ).
  • Tisk Vstupte na .

Získáte logickou hodnotu ( TRUE nebo False ), pokud řetězec v buňce obsahuje čísla, pak se zobrazí. TRUE , jinak FALSE .

  • Přetáhněte buňku dolů o Plnicí rukojeť použít vzorec na zbytek buněk a zkontrolovat, který řetězec obsahuje čísla a který ne.

3. VBA pro extrakci čísel z řetězce

Ve výše uvedené části jsme se naučili, jak zkontrolovat, zda řetězec obsahuje čísla či nikoli. A v této části se naučíme, jak tato čísla extrahovat a umístit do jiné buňky na příkladu uvedeném níže.

Kroky pro kontrolu, zda řetězce obsahují čísla, a jejich extrakci pomocí VBA jsou uvedeny níže.

Kroky:

  • Otevřít Editor jazyka Visual Basic z Vývojář karta a Vložte a Uživatelský formulář tentokrát z karty Vložit v okně kódu.
  • Z objevilo Toolbox , přetahování CommandButton v Uživatelský formulář .

  • Dvakrát klikněte na tlačítko, zkopírujte následující kód a vložte jej.
 Private Sub CommandButton1_Click() Worksheets("Number").Range("C2:C15").ClearContents checkNumber (Worksheets("Number").Range("B2:B15")) End Sub checkNumber(objRange As Range) Dim myAccessary As Variant Dim i As Long Dim iRow As Long iRow = 2 For Each myAccessary In objRange For i = 1 To Len(myAccessary.Value) If IsNumeric(Mid(myAccessary.Value, i,1)) Then If Trim(objRange.Cells(objRange.Row - 1, 2)) "" Then objRange.Cells(iRow - 1, 2) = _ objRange.Cells(iRow - 1, 2) & Mid(myAccessary.Text, i, 1) Else objRange.Cells(iRow - 1, 2) = Mid(myAccessary.Text, i, 1) End If End If Next iRow = iRow + 1Next myAccessary End Sub 
  • Spustit kód a přejdete na pracovní list, který vás zajímá.
  • Klikněte na příkazové tlačítko a získáte extrahované číslo z řetězců.

4. VBA pro kontrolu, zda řetězec obsahuje určité písmeno

Tato metoda je téměř podobná metodě kontroly podřetězce v řetězci.

Níže je uveden InStr funkce pro zjištění, zda řetězec obsahuje určité písmeno v aplikaci Excel.

Kroky:

  • 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 ContainChar() If InStr("Film: Iron Man, Batman, Superman, Spiderman, Thor", "Z")> 0 Then MsgBox "Písmeno nalezeno" Else MsgBox "Písmeno nenalezeno" End If End Sub 

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

  • Spustit programu. Pokud vaše řetězec obsahuje písmeno pak se zobrazí nalezená shoda, v opačném případě se nevrátí žádná nalezená shoda.

V našem příkladu jsme chtěli zjistit, zda náš primární řetězec " Filmy: Iron Man, Batman, Superman, Spiderman, Thor " obsahuje písmeno " Z " nebo ne. Protože ne, dostaneme Dopis nebyl nalezen výsledek.

5. VBA pro kontrolu, zda rozsah řetězce obsahuje jiný řetězec

Naučili jsme se, jak zkontrolovat, zda daný řetězec obsahuje jiný řetězec, nebo ne. V této části se však naučíme, jak zkontrolovat, zda rozsah řetězců obsahuje podřetězec, nebo ne, a to na příkladu následujícího souboru dat.

Kroky:

  • Otevřít 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 ContainsSub() If InStr(ActiveSheet.Select, "Hulk")> 0 Then MsgBox "Movie found" Else MsgBox "Movie not found" End If End Sub 

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

  • Spustit kód.

Pokud je váš rozsah řetězec obsahuje podřetězec pak se zobrazí nalezená shoda, v opačném případě se nevrátí žádná nalezená shoda.

6. VBA pro extrakci řetězců z řetězců

V této části se podíváme, jak zkontrolovat, zda řetězce obsahují určité podřetězce, a vyjmout je v jiné buňce.

Získáme informace o jménech začínajících na " Chris " z následujícího souboru dat.

Kroky :

  • Otevřít 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.
 Sub SearchSub() Dim lastrow As Long Dim i As Integer, count As Integer lastrow = ActiveSheet.Range("A30000").End(xlUp).Row For i = 1 To lastrow If InStr(1, LCase(Range("C" & i)), "Chris") 0 Then count = count + 1 Range("F" & count & ":H" & count) = Range("B" & i & ":D" & i).Value End If Next i End Sub 

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

  • Spustit kód.

Pouze názvy začínající na " Chris " se uloží do předdefinovaných buněk.

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.