Sadržaj
Implementacija VBA je najučinkovitija, najbrža i najsigurnija metoda za pokretanje bilo koje operacije u Excelu. U ovom članku pokazat ćemo vam kako pronaći određene nizove u drugom zadanom nizu pomoću VBA u Excelu.
Preuzmite predložak za vježbu
Vi ovdje možete preuzeti besplatni Excel predložak za vježbanje.
VBA za pronalaženje u String.xlsm
Funkcija InStr
Microsoft Excel ima ugrađenu funkciju koja se zove funkcija InStr za pronalaženje položaja određenih nizova u danom nizu.
Generička sintaksa:
InStr([start], string1, string2, [compare])
Ovdje,
Argumenti | Obavezno/ Izborno | Definicija |
---|---|---|
početak | Neobavezno | Početni položaj pretraživanja.
|
string1 | Obavezno | Niz u kojem se traži, primarni niz. |
niz2 | Obavezno | Niz koji se traži u primarnom nizu . |
usporedi | Izborno | Funkcija InStr prema zadanim je postavkama osjetljiva na velika i mala slova. Ali ako želite pokrenuti InStr bez obzira na velika i mala slova, tada možete proslijediti argument ovdje da izvršite određenu usporedbu. Ovaj argument može biti sljedećivrijednosti,
Prema zadanim postavkama, InStr uzima vbBinaryCompare kao argument usporedbe. |
8 jednostavnih primjera za pronalaženje određenog položaja niza u zadanom nizu pomoću VBA
Pogledajmo nekoliko jednostavnih primjera za dobivanje položaja određenih nizova u zadanom nizu pomoću VBA .
1. VBA za pronalaženje položaja teksta u nizu
Ispod je primjer InStr za pronalaženje položaj teksta u nizu.
- Pritisnite Alt + F11 na tipkovnici ili idite na karticu Razvojni programer -> Visual Basic za otvaranje Visual Basic Editor .
- U skočnom prozoru koda, iz trake izbornika , kliknite Umetni -> Modul .
- Sada u prozoru koda napišite jednostavan InStr program unutar VBA Sub Procedura (vidi dolje).
8687
Vaš kod je sada spreman za izvođenje.
- Pritisnite F5 na tipkovnici ili na traci izbornika odaberite Pokreni -> Pokrenite Sub/UserForm . Također možete samo kliknuti na malu ikonu Play u traci podizbornika da biste pokrenuli makro.
Vidjet ćete da skočni okvir s porukom dat će vam brojdeklarirajući položaj teksta koji želite provjeriti.
Objašnjenje:
Naš primarni niz, “ Sreća je izbor ” je rečenica od 21 slova (s razmacima) i htjeli smo pronaći poziciju teksta “ izbor ” u tom nizu. Tekst “ izbor ” počinje od 16. pozicije primarnog niza, stoga smo dobili broj 16 kao naš izlaz u okviru s porukom.
2. VBA za pronalaženje teksta s određenog položaja u nizu
Sada saznajmo što bi se dogodilo da želimo dobiti položaj s određenog broja.
- Na isti način kao prije toga otvorite Visual Basic Editor s kartice Developer i Umetnite Modul u prozor koda.
- U prozor koda, napišite jednostavan InStr program prikazan gore i proslijedite vrijednost u početnom argumentu prema poziciji s koje želite brojati svoj tekst.
3857
- Zatim, pokrenite kôd.
Vidjet ćete da će skočni okvir s porukom 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 faze 1) da tekst “ izbor ” počinje s pozicije 16 , pa smo umetnuli dva “ choice ” u primarnom nizu i postavite 17 kao naš1. parametar za preskakanje prvog “ izbor ”. Dakle, Pokrenuli smo gornju makronaredbu i ona nam je pokazala broj pozicije 27 koji je točno broj pozicije drugog “ izbora ” u danom nizu.
3. VBA za pronalaženje teksta s funkcijom InStr koja ne razlikuje velika i mala slova u nizu
Od uvoda u funkciju InStr već znate da je prema zadanim postavkama funkcija InStr je osjetljiv na velika i mala slova. Otkrijmo to na primjeru.
Pogledajte sljedeći VBA kod, gdje smo htjeli pronaći položaj riječi “ Izbor ” s velikim slovom “C” u nizu “ Sreća je izbor ” gdje se izbor piše s malim slovom “c” .
- Pokrenite kod i pronađite 0 kao naš izlaz.
To je zato što funkcija InStr različito tretira veliko “C” i malo “c” . Tako je tražio riječ “ Izbor ” u nizu i nije dobio nikakvo podudaranje, pa je vratio 0 .
- Da bi funkcija InStr bila neosjetljiva na velika i mala slova , postavite argument usporedbe na vbTextCompare (pogledajte dolje).
7935
- Pokrenite kod.
Dobit ćete 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 položaj s lijeve strane niza. Ali što ako želite pronaći položaj teksta s desne strane niza.
Funkcija InStrRev pretražuje s desne strane. Funkcija InStrRev radi vrlo slično funkciji InStr i pronaći će vam položaj teksta s desne strane niza.
Pogledajte sljedeće primjere da biste razumjeli razliku.
- Ako pokrenemo sljedeći kod s funkcijom InStr tada,
daje nam poziciju ( 16 ) prvog teksta “ izbor ”.
- Ali ako pokrenemo isti kod s funkcijom InStrRev tada,
ona nam daje poziciju ( 27 ) posljednjeg teksta “ izbor ”.
Slična čitanja:
- Pronađi sljedeće pomoću VBA u Excelu (2 primjera)
- Kako pronaći i zamijeniti pomoću VBA (11 načina)
- Pronađite točno podudaranje pomoću VBA u Excelu (5 načina)
5. VBA za pronalaženje položaja znaka u nizu
Također možete pronaći položaj određenog znaka u nizu na isti način na koji ste pronašli tekst.
- Kopirajte sljedeći kod u vaš VBA prozor koda
2264
- I Pokrenite makro.
Prvi “ e ” u našem danom nizu je napoložaj broja 7 .
6. VBA za pronalaženje podniza u nizu
Ovdje ćemo naučiti kako pronaći sadrži li niz podniz ili ne.
Da bismo to dobili, imamo za pokretanje IF naredbe u našem kodu.
- Na isti način kao prije, otvorite Visual Basic Editor s kartice Developer i Umetnite Modul u prozor koda.
- U prozor koda kopirajte sljedeći kod i zalijepite ga.
5871
Vaš kod je sada spreman za izvođenje.
- Pokreni makro.
Ako vaš niz sadrži podniz tada ćete dobiti podudaranje pronađeno , u suprotnom će vratiti nijedno podudaranje. U našem primjeru htjeli smo saznati sadrži li naš primarni niz “ Sreća je izbor ” riječ “ izbor ” ili ne. Kako to čini, dobivamo rezultat Pronađeno podudaranje .
7. VBA za pronalaženje niza u rasponu ćelija
Možete tražiti određeni tekst u nizu nizova ćelija i vratiti određeni niz.
Pogledajte sljedeći primjer gdje ćemo pronađite “ Dr. ” i kada postoji podudaranje, vratit će se “ Doktor ”.
- Ispod je kôd za dobivanje rezultata o kojem je gore bilo riječi,
2352
- Pokrenite kod i rezultat je prikazan u nastavku
- Možete izmijeniti makro prema svojim potrebama. Na primjer, ako želitepronaći “ Profesor ” u bilo kojoj ćeliji niza i dobiti “ Profesor ” kao povratnu vrijednost, zatim jednostavno proslijedite “ Prof. ” kao vrijednost umjesto “ Dr .” u 4. retku makronaredbe i “ Profesor ” umjesto “ Doktor ” u 5. retku makronaredbe i definirajte odgovarajući broj raspona ćelija.
8. VBA za pronalaženje niza u ćeliji
Također možete tražiti određeni tekst u jednoj ćeliji niza i vratiti određeni niz.
- Kopirajte sljedeći kod i zalijepite ga u prozor koda.
7069
Tražit će " Dr. ” u ćeliji B5 i ako pronađe podudaranje vraća “ Doktor ” u ćeliji C5 .
- Možete izmijeniti makro prema svojim potrebama. Na primjer, ako želite pronaći “ Profesor ” u bilo kojoj ćeliji niza i dobiti “ Profesor ” kao rezultat, zatim jednostavno proslijedite “ Prof. ” kao vrijednost umjesto “ Dr .” u 2. retku makronaredbe i “ Profesor ” umjesto “ Doktor ” u 3. retku makronaredbe i definirajte odgovarajući referentni broj ćelije.
Zaključak
Ovaj vam je članak pokazao kako pronaći određene tekstove u nizu u Excelu pomoću VBA makronaredbe. Nadam se da vam je ovaj članak bio od velike koristi. Slobodno postavite sva pitanja u vezitemu.