Sadržaj
Implementacija VBA je najefikasnija, najbrža i najsigurnija metoda za pokretanje bilo koje operacije u Excelu. U ovom članku ćemo vam pokazati kako pronaći određene nizove u drugom datom nizu koristeći VBA u Excelu.
Preuzmite predložak za vježbanje
Vi možete preuzeti besplatni Excel predložak za vježbanje ovdje.
VBA za pronalaženje u String.xlsm
InStr funkcija
Microsoft Excel ima ugrađenu funkciju zvanu InStr Function za pronalaženje položaja određenih stringova u datom nizu.
Generička sintaksa:
InStr([start], string1, string2, [compare])
Ovdje,
Argumenti | Obavezno/ Opciono | Definicija |
---|---|---|
početak | Opciono | Početna pozicija pretrage.
|
string1 | Obavezno | Niz za pretraživanje, primarni niz. |
string2 | Obavezno | String za traženje u primarnom nizu . |
uporedi | Opciono | Funkcija InStr je prema zadanim postavkama osjetljiva na velika i mala slova. Ali ako želite da pokrenete InStr neosjetljiv na mala i mala slova, onda možete proslijediti argument ovdje da izvršite određeno poređenje. Ovaj argument može biti sljedećivrijednosti,
Prema zadanim postavkama, InStr uzima vbBinaryCompare kao argument usporedbe. |
8 jednostavnih primjera za pronalaženje određene pozicije niza u datom nizu pomoću VBA
Hajde da vidimo nekoliko jednostavnih primjera za dobivanje položaja određenih nizova u datom nizu koristeći VBA .
1. VBA za pronalaženje pozicije teksta u nizu
U nastavku je primjer InStr za pronalaženje položaj teksta u nizu.
- Pritisnite Alt + F11 na tastaturi ili idite na karticu Razvojnik -> Visual Basic da otvorite Visual Basic Editor .
- U skočnom prozoru koda, sa trake menija , kliknite Umetni -> Modul .
- Sada u prozoru koda, napišite jednostavan InStr program unutar VBA Sub Procedura (vidi dolje).
5316
Vaš kod je sada spreman za pokretanje.
- Pritisnite F5 na tastaturi ili na traci menija odaberite Pokreni -> Pokrenite Sub/UserForm . Također možete jednostavno kliknuti na malu ikonu Play u traci podmenija da pokrenete makro.
Vidjet ćete da iskačuća poruka će vam dati brojdeklariranje pozicije teksta koji želite provjeriti.
Objašnjenje:
Naš primarni niz, “ Sreća je izbor ” je rečenica od 21 slovo (sa razmacima) i htjeli smo pronaći poziciju teksta “ izbor ” u tom nizu. Tekst “ choice ” je počeo od 16. pozicije primarnog niza, stoga smo dobili broj 16 kao naš izlaz u okviru za poruke.
2. VBA za pronalaženje teksta sa određene pozicije u nizu
Sada hajde da saznamo šta bi se desilo da želimo da dobijemo poziciju sa određenog broja.
- Na isti način kao prije toga otvorite Visual Basic Editor sa kartice Razvojnik i Ubaci Modul u prozor koda.
- U u prozoru koda, napišite jednostavan InStr program prikazan gore i proslijedite vrijednost u početni argument prema poziciji s koje želite računati svoj tekst.
2424
- Sljedeće, Pokreni kod.
Vidjet ćete da će iskačuća poruka dati vam broj koji deklarira poziciju teksta počevši od određene pozicije koju želite provjeriti.
Objašnjenje:
Kao što smo već znali (iz rasprave u fazi 1) da je tekst “ izbor ” počeo sa pozicije 16 , pa smo ubacili dva “ choice ” u primarnom nizu i postavite 17 kao naš1. parametar za preskakanje prvog “ izbor ”. Dakle, Pokrenili smo gornji makro i on nam je pokazao broj pozicije 27 što je tačno broj pozicije drugog “ izbor ” u datom nizu.
3. VBA za pronalaženje teksta s funkcijom InStr koja ne razlikuje velika i mala slova u stringu
Od uvođenja funkcije InStr već znate da je po defaultu funkcija InStr je osjetljiv na velika i mala slova. Hajde da to otkrijemo na primjeru.
Pogledajte sljedeći VBA kod, gdje smo htjeli pronaći poziciju riječi “ Izbor ” sa velikim “C” u nizu “ Sreća je izbor ” gdje je izbor napisan sa malim “c” .
- Pokrenite kod i pronađite 0 kao naš izlaz.
To je zato što funkcija InStr različito tretira veliko “C” i malo “c” . Dakle, tražio je riječ “ Izbor ” u nizu i nije dobio nikakvo podudaranje, pa je vratio 0 .
- Da biste funkciju InStr učinili neosjetljivom na velika i mala slova , postavite argument usporedbe na vbTextCompare (pogledajte dolje).
7982
- Pokreni kod.
Dobit ćeš poziciju teksta iz niza, bilo da je tekst napisan velikim ili malim slovima .
4. VBA za pronalaženje teksta s desne strane niza
Do sada nam je funkcija InStr davala samo poziciju s lijeve strane niza. Ali šta ako želite da pronađete poziciju teksta sa desne strane stringa.
Funkcija InStrRev pretražuje s desne strane. Funkcija InStrRev radi vrlo slično funkciji InStr i ona će vam pronaći poziciju teksta s desne strane niza.
Pogledajte sljedeće primjere da biste razumjeli razliku.
- Ako pokrenemo sljedeći kod s InStr funkcijom, onda,
daje nam poziciju ( 16 ) prvog teksta “ izbor ”.
- Ali ako pokrenemo isti kod sa InStrRev funkcijom, onda,
to nam daje poziciju ( 27 ) posljednjeg teksta “ izbor ”.
Slična čitanja:
- FindNext koristeći VBA u Excelu (2 primjera)
- Kako pronaći i zamijeniti koristeći VBA (11 načina)
- Pronađi tačno podudaranje koristeći VBA u Excelu (5 načina)
5. VBA za pronalaženje pozicije znaka u nizu
Također možete pronaći poziciju određenog znaka u nizu na isti način na koji ste pronašli tekst.
- Kopirajte sljedeći kod u vaš VBA kodni prozor
4602
- I Pokreni makro.
Prvi “ e ” u našem datom nizu je nabroj 7 pozicija.
6. VBA za pronalaženje podniza u nizu
Ovdje ćemo naučiti kako pronaći da li niz sadrži podniz ili ne.
Da bismo to dobili, imamo da pokrenete IF naredbu u našem kodu.
- Na isti način kao i prije, otvorite Visual Basic Editor sa kartice Developer i Umetnite a Module u prozor koda.
- U prozoru koda kopirajte sljedeći kod i zalijepite ga.
9180
Vaš kod je sada spreman za pokretanje.
- Pokreni makro.
Ako vaš string sadrži podniz tada ćete dobiti podudaranje pronađeno , u suprotnom će vratiti nijedan podudaran. U našem primjeru, htjeli smo saznati da li naš primarni niz “ Sreća je izbor ” sadrži riječ “ izbor ” ili ne. Kako to radi, dobivamo rezultat Pronađeno podudaranje .
7. VBA za pronalaženje niza u rasponu ćelija
Možete tražiti određeni tekst u rasponu ćelija niza i vratiti određeni niz.
Pogledajte sljedeći primjer gdje ćemo pronađite “ Dr. ” i kada postoji podudaranje vratit će “ Doktor ”.
- Ispod je kod za dobivanje rezultata o kojem smo gore govorili,
1611
- Pokreni kod i rezultat je prikazan ispod
- Možete modificirati makro prema vašim potrebama. Na primjer, ako želiteda pronađete “ Prof. ” u bilo kojoj ćeliji niza, i dobijete “ Professor ” kao povratak, a zatim jednostavno proslijedite “ Prof. ” kao vrijednost umjesto “ Dr .” u 4. redu makroa i “ Profesor ” umjesto “ Doktor ” u 5. redu makroa i definirajte prema tome broj raspona ćelija.
8. VBA za pronalaženje niza u ćeliji
Možete i pretražiti određeni tekst u jednoj ćeliji niza i vratiti određeni niz.
- Kopirajte sljedeći kod i zalijepite ga u prozor koda.
6114
Tražit će “ Dr. ” u ćeliji B5 i ako pronađe podudaranje onda vraća “ Doktor ” u ćeliji C5 .
- Možete modificirati makro prema vašim potrebama. Na primjer, ako želite pronaći “ Prof. ” u bilo kojoj ćeliji niza, i dobiti “ Profesor ” kao povratak, zatim jednostavno proslijedite “ Prof. ” kao vrijednost umjesto “ Dr .” u 2. redu makroa i “ Profesor ” umjesto “ Doktor ” u 3. redu makroa i definirajte referentni broj ćelije prema tome.
Zaključak
Ovaj članak vam je pokazao kako pronaći određene tekstove u nizu u Excelu koristeći VBA makro. Nadam se da vam je ovaj članak bio od velike koristi. Slobodno postavite bilo kakva pitanja u vezitemu.