Ako nájsť podreťazec pomocou VBA (9 spôsobov)

  • Zdieľajte To
Hugh West

Ak hľadáte niektorý z najjednoduchších spôsobov, ako nájsť podreťazec pomocou VBA, potom ste na správnom mieste. Po prejdení tohto článku budete môcť ľahko nájsť pozíciu podreťazca alebo extrahovať údaje pomocou tohto podreťazca alebo zmeniť formát podreťazca. Poďme sa pustiť do článku.

Stiahnite si pracovný zošit

Ukážka obsahu

9 spôsobov vyhľadávania podreťazca pomocou VBA

Tu mám nasledujúcu tabuľku údajov, pomocou ktorej ukážem spôsoby hľadania podreťazca v reťazci pomocou VBA. Pokúsim sa tiež ukázať spôsoby hľadania podreťazca v náhodnom reťazci.

Túto úlohu som vykonal pomocou Microsoft Excel 365 verziu, môžete použiť akúkoľvek inú verziu podľa toho, ako vám to vyhovuje.

Metóda 1: Vyhľadanie podreťazca v reťazci pomocou VBA

Ak chcete nájsť požadovaný podreťazec v reťazci pomocou VBA, môžete použiť funkcia InStr v kóde VBA.

Krok-01 :

➤ Prejsť na Vývojár Tab>> Visual Basic Možnosť

Potom sa Editor jazyka Visual Basic sa otvorí.

➤ Prejsť na Vložte Tab>> Modul Možnosť

Potom sa Modul sa vytvorí.

Krok-02 :

➤Napíšte nasledujúci kód

 Sub FindFirst() Dim Pos As Integer Pos = InStr(1, "Myslím, že teda som", "myslím") MsgBox Pos End Sub 

Tu, InStr(1, "Myslím, teda som", "myslím") vráti pozíciu podreťazca reťazca. 1 je počiatočná poloha, " Myslím, teda som" je reťazec, v ktorom nájdete požadovaný podreťazec, a "myslieť" je podreťazec, ktorý chcete vyhľadať. V predvolenom nastavení rozlišuje veľké a malé písmená, takže si dajte pozor na veľkosť písmen podreťazca, ktorý chcete vyhľadať.

➤Press F5

Výsledok :

Potom sa zobrazia tieto informácie Rámček na správy obsahujúce polohu "myslieť" podreťazec.

Metóda 2: Vyhľadanie podreťazca v reťazci, ktorý nerozlišuje veľkosť písmen

Ak chcete nájsť požadovaný podreťazec v reťazci bez ohľadu na veľkosť pádu pomocou VBA, postupujte podľa tejto metódy.

Krok-01 :

➤Sledovať Krok-01 z Metóda-1

 Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "Myslím, teda som", "myslím",vbTextCompare) MsgBox Pos End Sub 

Tu, vbTextCompare sa používa na vyhľadávanie podreťazca bez rozlišovania veľkých a malých písmen.

➤Press F5

Výsledok :

Potom získate nasledujúce informácie Rámček na správy obsahujúce polohu "myslieť" podreťazec.

To isté môžete urobiť pomocou nasledujúceho kódu.

 Option Compare Text Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "Myslím, teda som", "myslím") MsgBox Pos End Sub 

Tu, Možnosť Porovnať text nájde podreťazec bez ohľadu na veľkosť písmen.

➤Press F5

Výsledok :

Potom získate tieto informácie Rámček na správy obsahujúce polohu "myslieť" podreťazec.

Metóda 3: Použitie funkcie InstrRev vo VBA

Tu ukážem spôsob, ako nájsť podreťazec z konca reťazca.

Krok-01 :

➤Sledovať Krok-01 z Metóda-1

 Sub FindFromEnd() MsgBox InStrRev("Myslím, teda som", "I") End Sub 

InStrRev nájde podreťazec z pravej strany namiesto ľavej strany.

➤Press F5

Výsledok :

Potom získate tieto informácie Rámček na správy obsahujúce polohu druhého "I" podreťazec z pravej strany.

Metóda 4: Hľadanie pozície podreťazca v reťazci v rozsahu údajov

Ak chcete nájsť špeciálny znak "@" v E-mailová adresa , potom postupujte podľa tejto metódy. Pridala som sem Stĺpec pozície na tento účel.

Krok-01 :

➤Sledovať Krok-01 z Metóda-1

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

Vytvorí funkciu s názvom FindSubstring (môžete použiť akýkoľvek iný názov)

hodnota je odkaz na bunku, ktorá obsahuje reťazec, a je deklarovaný ako Rozsah .

Krok-02 :

➤Vyberte výstup Bunka E5

➤Typ nasledujúcej funkcie (vytvorenej VBA )

=FindSubstring(D5)

D5 je bunka, ktorá obsahuje reťazec.

➤Press VSTÚPIŤ

➤Potiahnite nadol Rukoväť náplne Nástroj

Výsledok :

Potom sa zobrazia pozície špeciálneho znaku " @" v E-mailová adresa .

Podobné čítanie:

  • Ako nájsť reťazec v bunke pomocou VBA v programe Excel (2 metódy)
  • FindNext pomocou VBA v programe Excel (2 príklady)
  • Ako nájsť reťazec pomocou VBA v programe Excel (8 príkladov)
  • VBA Nájsť posledný riadok v programe Excel (5 spôsobov)

Metóda 5: Kontrola určitého podreťazca v reťazci v rozsahu údajov

Predpokladajme, že chcete napísať Prejsť alebo Nedodržanie korešpondencie k menám študentov v závislosti od Stĺpec výsledkov kde Prejsť alebo Zlyhanie bol zapísaný v zátvorke. Ak chcete nájsť tento podreťazec v Stĺpec s výsledkom a zapíšte ho do Stĺpec vyhovel alebo nevyhovel postupujte podľa tejto metódy.

Krok-01 :

➤Sledovať Krok-01 z Metóda-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 

Tu je rozsah buniek C5:C10 čo je Stĺpec s výsledkom

InStr(cell.value, "Pass")> 0 je stav, keď je číslo väčšie ako nula (keď bunka obsahuje "Pass" ), potom bude nasledujúci riadok pokračovať a poskytne výstup v susednej bunke ako Prešiel .

Ak sa podmienka stane nepravdivou, znamená to, že bunka neobsahuje žiadne "Pass" potom riadok pod Inak sa vykoná a poskytne výstupnú hodnotu v susednej bunke ako Neúspešné .

Táto slučka bude pokračovať pre každú bunku.

➤Press F5

Výsledok :

Potom sa vám zobrazia nasledujúce výstupy v Vyhovel alebo nevyhovel stĺpec.

Metóda 6: Kontrola určitého podreťazca v reťazci a extrahovanie údajov

Ukážem vám, ako nájsť študentov s menom Michael v Stĺpec s menom študenta a extrahovať ich zodpovedajúce údaje pomocou VBA v tejto metóde.

Krok-01 :

➤Sledovať Krok-01 z Metóda-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 

Tu som použil B100 ako Rozsah aktívneho listu ale môžete použiť ľubovoľný rozsah podľa vášho použitia.

InStr(1, Range("B" & i), "Michael")> 0 je podmienka na kontrolu, či bunka v stĺpci B obsahuje Michael

Range("E" & icount & ":G" & icount) je rozsah, v ktorom chcete mať výstupné údaje, a Range("B" & i & ":D" & i).value poskytne hodnoty zo stĺpcov B na D .

➤Press F5

Výsledok :

Potom získate nasledujúce extrahované údaje pre študentov s menom Michael .

Metóda 7: Vyhľadávanie podreťazca pre slovo

Ak chcete nájsť podreťazec ako slovo, postupujte podľa tejto metódy.

Krok-01 :

➤Sledovať Krok-01 z Metóda-1

 Sub Stringforword() Dim j As Integer j = InStr("Tu je to, čo som", "je") If j = 0 Then MsgBox "Slovo nebolo nájdené" Else MsgBox "Slovo nájdené na pozícii: " & j End If End Sub 

Skontroluje, či reťazec obsahuje je . a potom sa uvedie jeho poloha

➤Press F5

Výsledok :

Následne sa zobrazí nasledujúce okno s hlásením slovo nájdené v pozícii: 6 (pozícia je . ).

Tento kód môžete vyskúšať pre slovo, ktoré sa v reťazci nenachádza.

➤Zadajte nasledujúci kód

 Sub Stringforword() Dim j As Integer j = InStr("Tu je to, čo som", "sú") If j = 0 Then MsgBox "Slovo nebolo nájdené" Else MsgBox "Slovo nájdené na pozícii: " & j End If End Sub 

➤Press F5

Výsledok :

Následne sa zobrazí nasledujúce okno s hlásením slovo nebolo nájdené .

Metóda 8: Použitie funkcie Instr a LEFT

Tu vysvetlím spôsob, ako nájsť pozíciu podreťazca v reťazci a extrahovať texty pred týmto podreťazcom pomocou VBA a funkcia LEFT .

Krok-01 :

➤Sledovať Krok-01 z Metóda-1

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

j = InStr(txt, "is") je pozícia podreťazca je . a Vľavo(txt, j - 1) extrahuje podreťazce pred je . .

➤Press F5

Výsledok :

Potom sa zobrazí nasledujúce okno s hlásením Tu (podreťazec pred je . ).

Metóda-9: Zvýraznenie určitého podreťazca v reťazci

Známky pred zátvorkami môžete zvýrazniť tučným písmom v Stĺpec s výsledkom podľa tejto metódy.

Krok-01 :

➤Sledovať Krok-01 z Metóda-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áti pozíciu prvej zátvorky a Cell.Characters(1, txt - 1).Font.Bold vytvorí podreťazec pred prvou zátvorkou Odvážne .

Krok-02 :

➤Vyberte Stĺpec výsledkov

➤ Prejsť na Vývojár Tab>> Makrá Možnosť

Potom a Makro zobrazí sa sprievodca.

➤Vybrať Tučný podreťazec (kódový názov VBA) a potom Spustiť .

Výsledok :

Potom sa známky v Výsledok Stĺpec budú zvýraznené tučným písmom.

Praktická časť

Na cvičenie podľa seba sme poskytli Cvičenie sekciu ako nižšie v hárku s názvom Cvičenie . Prosím, urobte to sami.

Záver

V tomto článku som sa snažil pokryť najjednoduchšie spôsoby, ako nájsť podreťazec pomocou VBA v programe Excel efektívne. Dúfam, že vám to bude užitočné. Ak máte nejaké návrhy alebo otázky, neváhajte sa s nami o ne podeliť.

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.