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