Kontrola VBA, či reťazec obsahuje iný reťazec v programe Excel (6 metód)

  • Zdieľajte To
Hugh West

Implementácia VBA je najefektívnejšia, najrýchlejšia a najbezpečnejšia metóda na spustenie akejkoľvek operácie v programe Excel. V tomto článku vám ukážeme, ako skontrolovať, či reťazec obsahuje iný reťazec v programe Excel pomocou VBA .

Stiahnite si šablónu pre prax

Bezplatnú cvičnú šablónu Excel si môžete stiahnuť odtiaľto.

VBA na kontrolu, či reťazec obsahuje hodnotu.xlsm

6 metód vo VBA na kontrolu, či reťazec obsahuje iný reťazec v programe Excel

Nižšie v tejto časti nájdete 6 účinných metód, ako implementovať VBA na kontrolu, či reťazec obsahuje iný reťazec alebo nie.

1. VBA na kontrolu, či reťazec obsahuje podreťazec

Nižšie je uvedený príklad funkcia InStr na zistenie, či reťazec obsahuje podreťazec v programe Excel.

Kroky:

  • Tlač Alt + F11 na klávesnici alebo prejdite na kartu Vývojár -> Visual Basic otvoriť Editor jazyka Visual Basic .

  • Vo vyskakovacom okne kódu kliknite na paneli ponúk na položku Vložiť -> Modul .

  • V okne kódu skopírujte nasledujúci kód a vložte ho.
 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 teraz pripravený na spustenie.

  • Spustiť makro.

Ak váš reťazec obsahuje podreťazec potom sa zobrazí nájdená zhoda, v opačnom prípade sa nevráti žiadna nájdená zhoda.

V našom príklade sme chceli zistiť, či náš primárny reťazec " Filmy: Iron Man, Batman, Superman, Spiderman, Thor " obsahuje slovo " Hulk " alebo nie. Keďže nie, dostaneme Film nebol nájdený výsledok.

2. VBA na kontrolu, či reťazec obsahuje číslo

Môžete vyhľadávať, či reťazce obsahujú čísla alebo nie, pomocou príkazu VBA kód.

Pozrite sa na nasledujúci príklad, v ktorom zistíme, ktoré reťazce obsahujú čísla s názvami filmov.

Kroky na kontrolu, či reťazce obsahujú čísla s VBA sú uvedené nižšie.

Kroky:

  • Rovnaký spôsob ako predtým, otvoriť Editor jazyka Visual Basic z Vývojár karta a Vložte a Modul v okne kódu.
  • V okne kódu skopírujte nasledujúci kód a vložte ho.
 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 nie je čiastkový postup pre VBA spustiť program, čím sa vytvorí Funkcia definovaná používateľom (UDF), ktorý zavoláme v našom pracovnom hárku na vykonanie úlohy. Takže po napísaní kódu namiesto kliknutia na Spustiť kliknite na tlačidlo Uložiť na paneli ponúk, aby ste uložili súbor makra.
  • Teraz sa vráťte na pracovný hárok, ktorý vás zaujíma, a napíšte používateľsky definovanú funkciu, ktorú ste práve vytvorili v poli VBA kód ( SearchNumber , v prvom riadku kódu) a do zátvoriek funkcie zadajte referenčné číslo bunky reťazca, ktorá má úvodné čísla (napr. Bunka B5 ).
  • Tlač Vstúpte na stránku .

Získate logickú hodnotu ( TRUE alebo False ), ak reťazec v bunke obsahuje čísla, dostanete TRUE , v opačnom prípade FALSE .

  • Potiahnite bunku nadol o Rukoväť náplne použiť vzorec na zvyšok buniek a skontrolovať, ktorý reťazec obsahuje čísla a ktorý nie.

3. VBA na extrakciu čísel z reťazca

V predchádzajúcej časti sme sa naučili, ako skontrolovať, či reťazec obsahuje čísla alebo nie. A v tejto časti sa naučíme, ako tieto čísla extrahovať a umiestniť do inej bunky na príklade uvedenom nižšie.

Kroky na kontrolu, či reťazce obsahujú čísla, a ich extrakciu pomocou VBA sú uvedené nižšie.

Kroky:

  • Otvorte stránku Editor jazyka Visual Basic z Vývojár karta a Vložte a Používateľský formulár tentoraz z karty Vložiť v okne kódu.
  • Z objavil Toolbox , pretiahni a pusť CommandButton v Používateľský formulár .

  • Dvakrát kliknite na tlačidlo na tlačidlo, skopírujte nasledujúci kód a vložte ho.
 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 
  • Spustiť kód a dostanete sa na pracovný hárok, ktorý vás zaujíma.
  • Kliknite na príkazové tlačidlo a získate extrahované číslo z reťazcov.

4. VBA na kontrolu, či reťazec obsahuje určité písmeno

Táto metóda je takmer podobná metóde kontroly podreťazca v reťazci.

Nižšie je uvedený InStr funkcia na zistenie, či reťazec obsahuje určité písmeno v programe Excel.

Kroky:

  • Rovnaký spôsob ako predtým, otvoriť Editor jazyka Visual Basic z Vývojár karta a Vložte a Modul v okne kódu.
  • V okne kódu skopírujte nasledujúci kód a vložte ho.
 Public Sub ContainChar() If InStr("Film: Iron Man, Batman, Superman, Spiderman, Thor", "Z")> 0 Then MsgBox "List found" Else MsgBox "List not found" End If End Sub 

Váš kód je teraz pripravený na spustenie.

  • Spustiť programu. Ak váš reťazec obsahuje písmeno potom sa zobrazí nájdená zhoda, v opačnom prípade sa nevráti žiadna nájdená zhoda.

V našom príklade sme chceli zistiť, či náš primárny reťazec " Filmy: Iron Man, Batman, Superman, Spiderman, Thor " obsahuje písmeno " Z " alebo nie. Keďže nie, dostaneme List nebol nájdený výsledok.

5. VBA na kontrolu, či rozsah reťazca obsahuje iný reťazec

Naučili sme sa, ako skontrolovať, či daný reťazec obsahuje iný reťazec alebo nie. V tejto časti sa však naučíme, ako skontrolovať, či rozsah reťazcov obsahuje podreťazec alebo nie, a to na príklade nasledujúceho súboru údajov.

Kroky:

  • Otvoriť Editor jazyka Visual Basic z Vývojár karta a Vložte a Modul v okne kódu.
  • V okne kódu skopírujte nasledujúci kód a vložte ho.
 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 teraz pripravený na spustenie.

  • Spustiť kód.

Ak váš rozsah reťazec obsahuje podreťazec potom sa zobrazí nájdená zhoda, v opačnom prípade sa nevráti žiadna nájdená zhoda.

6. VBA na extrakciu reťazcov z reťazca

V tejto časti si ukážeme, ako skontrolovať, či reťazce obsahujú určité podreťazce, a vyextrahovať ich do inej bunky.

Vyberieme informácie o názvoch začínajúcich na " Chris " z nasledujúceho súboru údajov.

Kroky :

  • Otvoriť Editor jazyka Visual Basic z Vývojár karta a Vložte a Modul v okne kódu.
  • V okne kódu skopírujte nasledujúci kód a vložte ho.
 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 teraz pripravený na spustenie.

  • Spustiť kód.

Iba názvy začínajúce na " Chris " sa uložia do preddefinovaných buniek.

Hugh West je veľmi skúsený tréner a analytik Excelu s viac ako 10-ročnými skúsenosťami v tomto odvetví. Má bakalársky titul v odbore účtovníctvo a financie a magisterský titul v odbore Business Administration. Hugh má vášeň pre vyučovanie a vyvinul jedinečný vyučovací prístup, ktorý sa dá ľahko sledovať a pochopiť. Jeho odborné znalosti Excelu pomohli tisíckam študentov a profesionálov na celom svete zlepšiť svoje zručnosti a vyniknúť vo svojej kariére. Hugh sa prostredníctvom svojho blogu delí o svoje znalosti so svetom a ponúka bezplatné výukové programy Excelu a online školenia, ktoré jednotlivcom a firmám pomôžu naplno využiť ich potenciál.