Kazalo
Izvajanje VBA je najučinkovitejša, najhitrejša in najvarnejša metoda za izvedbo katere koli operacije v Excelu. V tem članku vam bomo pokazali, kako poiskati določene nize v drugem danem nizu z uporabo VBA v Excelu.
Prenesi predlogo za prakso
Brezplačno praktično predlogo Excel lahko prenesete s tega mesta.
VBA za iskanje v vrstici String.xlsm
Funkcija InStr
Microsoft Excel ima vgrajeno funkcijo, imenovano funkcija InStr za iskanje položaja določenih nizov v danem nizu.
Splošna sintaksa:
InStr([start], string1, string2, [compare])
Tukaj,
Argumenti | Obvezno/izbirno | Opredelitev |
---|---|---|
začetek | Izbirno | Začetni položaj iskanja.
|
niz1 | Zahtevano | Niz za iskanje, primarni niz. |
niz2 | Zahtevano | Niz, ki se išče v primarnem nizu. |
primerjava | Izbirno | Spletna stran InStr je privzeto občutljiva na velike in male črke. Če pa želite zagnati funkcijo, ki ni občutljiva na velike in male črke InStr , potem lahko tukaj posredujete argument za izvedbo določene primerjave. Ta argument ima lahko naslednje vrednosti,
Privzeto, InStr . vbBinaryCompare kot argument za primerjavo. |
8 enostavnih primerov za iskanje določenega položaja niza v danem nizu z uporabo VBA
Oglejmo si nekaj preprostih primerov za pridobivanje položajev določenih nizov v danem nizu z uporabo VBA .
1. VBA za iskanje položaja besedila v nizu
Spodaj je primer InStr za iskanje položaja besedila v nizu.
- Pritisnite Alt + F11 na tipkovnici ali odprite zavihek Razvijalec -> Visual Basic da odprete Urejevalnik Visual Basic .
- V pojavnem oknu kode v menijski vrstici kliknite Vstavljanje -> Modul .
- Zdaj v oknu kode napišite preprost InStr program znotraj Podpostopek VBA (glej spodaj).
Sub INSTR_Example() MsgBox InStr("Sreča je izbira", "izbira") End Sub
Vaša koda je zdaj pripravljena za zagon.
- Pritisnite F5 na tipkovnici ali v menijski vrstici izberite Run -> Run Sub/UserForm Lahko tudi kliknete na majhna ikona za predvajanje v podmeniju za zagon makra.
V pojavnem oknu s sporočilom boste videli, da vam bo številka, ki označuje položaj besedila, ki ga želite preveriti.
Pojasnilo:
Naš osnovni niz " Sreča je izbira " je stavek z 21 črkami (s presledki), mi pa smo želeli najti položaj besedila " izbira " v tem nizu. Besedilo " izbira " se je začel na 16. mestu primarnega niza, zato smo dobili številko 16 kot naš rezultat v polju za sporočila.
2. VBA za iskanje besedila z določenega položaja v nizu
Zdaj pa ugotovimo, kaj bi se zgodilo, če bi želeli pridobiti položaj iz določenega števila.
- Na enak način kot prej odprite Urejevalnik Visual Basic iz Razvijalec zavihek in Vstavite a Modul v oknu kode.
- V oknu s kodo napišite preprost InStr program, prikazan zgoraj, in v argument start prenesite vrednost glede na položaj, od katerega želite šteti besedilo.
Sub INSTR_Example() MsgBox InStr(17, "Sreča je izbira", "izbira") End Sub
- Naslednji, Spustite kodo.
V pojavnem oknu s sporočilom boste videli, da vam bo številka, ki označuje položaj besedila začetek z določenega položaja ki ste ga želeli preveriti.
Pojasnilo:
Kot smo že vedeli (iz razprave v prvi fazi), je besedilo " izbira " začel s položaja 16 , zato smo vstavili dva " izbira " v primarnem nizu in nastavite 17 kot naš 1. parameter, da preskočimo prvi " izbira ". Tako smo Spustite zgornji makro in pokazal nam je številko položaja 27 ki je natanko številka položaja drugi " izbira " v danem nizu.
3. VBA za iskanje besedila s funkcijo InStr v nizu, ki ne upošteva velikosti črk
Od uvedbe InStr že veste, da je privzeta funkcija InStr funkcija je občutljiva na velike in male črke. To preverimo s primerom.
Oglejte si naslednje VBA kodo, kjer smo želeli najti položaj besede " Izbira " z velika črka "C" v nizu " Sreča je izbira ", kjer je izbira napisana z mali "c" .
- Spustite kodo in poiščite 0 kot naš rezultat.
To je zato, ker InStr funkcija obravnava velika črka "C" in . mali "c" drugače. Zato je poiskal besedo " Izbira " v nizu in ni dobil nobenega ujemanja, zato je vrnil 0 .
- Če želite izdelati InStr funkcija razločevanje velikih in malih črk , nastavite argument za primerjavo na vbTextCompare (glej spodaj).
Sub INSTR_Example() MsgBox InStr(1, "Sreča je izbira in izbira", "Izbira", vbTextCompare) End Sub
- Spustite kodo.
Dobili boste položaj besedila iz niza, ali je besedilo zapisano v velike ali male črke .
4. VBA za iskanje besedila na desni strani niza
Do zdaj je InStr nam je podala le položaj na levi strani niza. Kaj pa, če želite poiskati položaj besedila na desni strani niza.
Funkcija InStrRev išče z desne strani. InStrRev deluje zelo podobno kot funkcija InStr in našla bo položaj besedila iz desna stran niza.
Za razumevanje razlike si oglejte naslednje primere.
- Če zaženemo naslednjo kodo z InStr funkcija potem,
nam poda položaj ( 16 ) prvega besedila " izbira ".
- Če pa isto kodo zaženemo z InStrRev Funkcija potem,
nam poda položaj ( 27 ) zadnjega besedila " izbira ".
Podobna branja:
- Iskanje naslednjega z uporabo VBA v Excelu (2 primera)
- Kako poiskati in zamenjati s programom VBA (11 načinov)
- Iskanje natančnega ujemanja z uporabo VBA v Excelu (5 načinov)
5. VBA za iskanje položaja znaka v nizu
Na enak način kot pri iskanju besedila lahko poiščete tudi položaj določenega znaka v nizu.
- Kopirajte naslednjo kodo v svoj VBA okno kode
Sub Find_Character() Dim z As Long z = InStr("Sreča je izbira", "e") MsgBox z End Sub
- In Spustite makro.
Prvi " e " v našem danem nizu je na številki 7 položaj.
6. VBA za iskanje podreza v nizu
Naučili se bomo, kako ugotoviti, ali niz vsebuje podrejeni niz ali ne.
Da bi to dosegli, moramo zagnati Izjava IF v naši kodi.
- Na enak način kot prej odprite Urejevalnik Visual Basic iz Razvijalec zavihek in Vstavite a Modul v oknu kode.
- V oknu s kodo kopirajte naslednjo kodo in jo prilepite.
Public Sub FindSub() If InStr("Sreča je izbira", "izbira") = 0 Then MsgBox "Ni najdeno ujemanje" Else MsgBox "Najdeno ujemanje" End If End Sub
Vaša koda je zdaj pripravljena za zagon.
- Spustite makro.
Če je vaš niz vsebuje podrejeni niz potem boste dobili Najdeno ujemanje v nasprotnem primeru ne bo vrnil nobenega najdenega ujemanja. V našem primeru smo želeli ugotoviti, ali je naš primarni niz " Sreča je izbira " vsebuje besedo " izbira " ali ne. Ker se to zgodi, dobimo Najdeno ujemanje rezultat.
7. VBA za iskanje niza v območju celic
Določeno besedilo lahko poiščete v nizu celic in vrnete določen niz.
Oglejte si naslednji primer, v katerem bomo našli " Dr. " in ko je zadetek enak, vrne " Doktor ".
- Spodaj je koda za pridobitev zgoraj opisanega rezultata,
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
- Spustite kodo in rezultat je prikazan spodaj
- Makro lahko spremenite glede na svoje potrebe. Če želite na primer poiskati " Prof. " v kateri koli celici niza in dobite " Profesor " kot povratek, potem preprosto prenesite " Prof. " kot vrednost namesto " Dr. ." v 4. vrstici makra in " Profesor " namesto " Doktor " v 5. vrstici makra in ustrezno določite številko območja celic.
8. VBA za iskanje niza v celici
Prav tako lahko iskanje določenega besedila v eni celici niza in vrne določen niz.
- Kopirajte naslednjo kodo in jo prilepite v okno s kodo.
Sub Find_String_in_Cell() If InStr(Range("B5").Value, "Dr.")> 0 Then Range("C5").Value = "Doctor" End If End Sub
Iskal bo " Dr. " v Celica B5 in če najde ujemanje, vrne " Doktor " v Celica C5 .
- Makro lahko spremenite glede na svoje potrebe. Če želite na primer poiskati " Prof. " v kateri koli celici niza in dobite " Profesor " kot povratek, potem preprosto prenesite " Prof. " kot vrednost namesto " Dr. ." v 2. vrstici makra in " Profesor " namesto " Doktor " v tretji vrstici makra in ustrezno določite referenčno številko celice.
Zaključek
Ta članek vam je pokazal, kako poiskati določena besedila v nizu v Excelu z uporabo Makro VBA. Upam, da vam je ta članek zelo koristil. Lahko vam zastavite kakršno koli vprašanje v zvezi s to temo.