Sadržaj
Dok radimo s Excel VBA kodovima, nailazimo na nekoliko ugrađenih funkcija koje pretvaraju složen zadatak u mali kod od jednog retka. InStr je takva funkcija dostupna u Excel VBA koja traži određeni niz unutar drugog zadanog niza počevši od zadane pozicije. Danas ću vam pokazati kako možete koristiti funkciju InStr u VBA-u za traženje određenog niza unutar drugog zadanog niza.
Preuzmite vježbovnicu
InStr Function.xlsm
Uvod u VBA InStr funkciju
- Sažetak
Traži određeni niz unutar zadanog niza, počevši od zadane pozicije. Ako pronađe podudaranje, vraća poziciju u zadanom nizu od mjesta gdje je podudaranje počelo.
- Sintaksa
InStr([start ],niz1,niz2,[usporedi])
- Argumenti
ARGUMENT | ZAHTJEV | OPIS
|
---|---|---|
[početak] | Izborno | Položaj s kojeg će započeti pretraživanje. Zadana vrijednost je 1. |
string1 | Potrebno | Niz unutar kojeg se traži dani niz. |
string2 | Obavezno | Niz koji traži unutar zadanog niza. |
[usporedi] | Izborno | Numerička vrijednost između {-1,0,1,2} koja određuje vrstu usporedbe. Thezadano je -1 (vbUseCompareOption). Ako naredba Usporedba opcija nije navedena, izvršite binarnu usporedbu. |
Napomena:
- Iako Argument [start] i argument [compare] nisu obavezni, potreban vam je argument [start] ako navedete argument [compare] . U suprotnom, pojavit će se pogreška.
- Ako je jedan ili oba argumenta [start] i [compare] argument Null , suočit ćete se s pogreškom.
- Četiri navedene vrijednosti u argumentu [usporedi] izvode četiri različite vrste usporedbe. Oni su navedeni u nastavku:
VRIJEDNOST | KONSTANTNA | OPIS
|
---|---|---|
-1 | vbUseCompareOption | Obavlja usporedbu navedenu u naredbu Option Compare. |
0 | vbBinaryCompare | Izvodi binarnu usporedbu. |
1 | vbTextCompare | Izvodi usporedbu teksta. |
2 | vbDatabaseCompare | Izvodi usporedbu na temelju vaše baze podataka . |
- Option Compare iskaz je iskaz koji se daje prije početka glavnog VBA koda. Određuje hoće li kod tražiti binarnu usporedbu ili tekstualnu usporedbu kada je to potrebno.
Opcija Usporedi tekst
-
- Jednostavnim rječnikom , binarna usporedba znači velika i mala slovausporedba.
- Jednostavno rečeno , Usporedba teksta znači usporedbu koja ne razlikuje velika i mala slova.
- Povratna vrijednost
- Vraća poziciju u string1 od koje je string2 započeo.
- U slučaju da string2 nije pronađen unutar string1 počevši od pozicije start , vraća 0.
- Ako je string1 nulte duljine, vraća 0.
- Ako je string2 nulte duljine, vraća argument start .
- I konačno, ako bilo koji od string1 ili string2 je Null , vraća pogrešku.
3 jednostavna primjera za korištenje VBA InStr funkcije
u u ovom odjeljku vidjet ćemo tri jednostavna primjera primjene VBA InStr funkcije u Excelu. Pogledajmo prvi primjer funkcije InStr u VBA kodovima.
1. Odlučivanje je li adresa adresa e-pošte ili nije upotrebom VBA InStr funkcije
Ovdje smo uzeli skup podataka koji sadrži neke kontakt adrese kupaca. Naš će cilj ovdje biti identificirati jesu li adrese adrese e-pošte ili ne.
Sada ćemo razviti VBA kod koristeći InStr funkciju za identifikaciju je li to adresa e-pošte ili ne. Da biste to učinili, slijedite korake u nastavku.
Koraci:
- Na početku idite na karticu Programer i odaberite Visual Basic ( Ili pritisnite Alt+F11) za otvaranje VBA prozor.
- Zatim, u VBA prozoru, idite na Insert > Modul .
- Nakon toga, na modul zalijepite sljedeći kod:
6211
- Štoviše, stvorili smo funkciju pod nazivom DECISION . Odlučuje je li adresa adresa e-pošte ili nije. Primijenimo funkciju na skup podataka koji imamo.
- U ćeliji C5 zapišite sljedeću formulu i zatim automatski popunite ostale ćelije pomoću Ručice za popunjavanje .
=DECISION(B5)
- Kao što vidimo, identificirali smo svaku adresu radi li se o adresi e-pošte ili ne.
🎓 Kako funkcionira kod?
- Funkcija DECISION(string1 kao niz)
Prvo, ovo stvara funkciju pod nazivom DECISION s argument niza pod nazivom string1 .
- Dim Position As Integer
Deklariše cjelobrojnu varijablu pod nazivom Position .
- Pozicija = InStr(1, string1, “@”, 0)
Ovim se dodjeljuje vrijednost Položaj varijable kao izlaz funkcije InStr s argumentima 1, string1, “@” i 0 . Ukratko, ovo dodjeljuje poziciju u adresi gdje postoji “@” .
- Ako je pozicija = 0, onda je DECISION = “Nije e-pošta”
Dodjeljuje izlaz funkcije DECISION kao “Not Email” , ako je Pozicija varijabla je 0 , što znači da u adresi nije bilo “@” .
(Prisjetite se ako bilo koji niz nije pronađen unutar danog niza, InStr funkcija vraća 0 ).
- Else DECISION = “Email”
Ovo dodjeljuje izlaz funkcije DECISION kao “Email” ako je u adresi postojao “@” . Stoga su adrese na kojima postoji “@” kategorizirane kao E-pošta , a ostale su kategorizirane kao “Nije e-pošta” .
Slična čitanja
- Kako koristiti VBA UCASE funkciju u programu Excel (4 primjera)
- Koristiti funkciju MsgBox u programu Excel VBA (Potpuna smjernica)
- Kako koristiti VBA SPLIT funkciju u Excelu (5 primjera)
- Koristiti LCase funkciju u VBA u Excelu (s 4 primjera)
- Kako koristiti funkciju popravka u programu Excel VBA (4 primjera)
2. Korištenje VBA InStr funkcije za Izdvajanje proširenja nekih adresa e-pošte
Ovdje imamo popis nekih adresa e-pošte nekih kupaca. Ovaj put ćemo izdvojiti ekstenziju adrese e-pošte na primjer imaju li gmail.com ili yahoo.com .
Da biste to učinili, slijedite korake u nastavku.
Koraci:
- Za početak, kao i prethodna metoda, otvorite novi VBA modul i zalijepite sljedeći kod u prozor.
3807
- Osim toga, stvorili smo funkciju pod nazivom EKSTENZIJA . Izdvaja ekstenziju bilo koje adrese e-pošte.
- Nadalje, primijenimo ovu funkciju na skup podataka koji imamo. Prvo unesite ovu formulu u ćeliju C5 , a zatim dvaput kliknite na Ručku za popunjavanje .
=EXTENSION(B5)
- Na kraju, možemo vidjeti da smo uspješno izvukli ekstenziju svih e-poruka.
🎓 Kako kod funkcionira?
- Funkcija EXTENSION (e-pošta kao niz)
Ovo stvara novu funkciju pod nazivom EXTENSION , s argument niza pod nazivom E-mail .
- Dim Position As Integer
Ovaj dio deklarira cjelobrojnu varijablu pod nazivom Position .
- Pozicija = InStr(1, Email, “@”, 0)
Ovim se dodjeljuje vrijednost <1 Varijabla>Pozicija kao izlaz funkcije InStr s argumentima 1, Email, “@” i 0 . Ukratko, ovo dodjeljuje poziciju u E-pošti gdje postoji “@” .
- PROŠIRENJE = Desno(E-pošta, (Len (E-pošta) – Pozicija))
Ovaj dio dodjeljuje izlaz funkcije EXTENSION kao znakove nakon simbola “@” . Ovo je potrebno proširenje e-pošte .
3. Izdvajanje imena ili prezimena iz imena upotrebom VBA InStr funkcije
Na kraju, izvršit ćemo jedinstveno drugačiji zadatak. Ovaj put imamo imena nekih zaposlenikapoduzeće. Pokušat ćemo izraditi funkciju za izdvajanje imena ili prezimena zaposlenika.
Da biste to učinili, slijedite korake u nastavku.
Koraci:
- Prvo, slično metodi 1 , zalijepite kod u nastavku u novi modul u VBA prozoru.
2045
- Ovdje smo stvorili funkciju pod nazivom SHORTNAME koja izdvaja ili ime ili prezime iz imena. Primijenimo ovu formulu na naš skup podataka.
- Najprije, da izdvojite ime, zapišite formulu u nastavku u ćeliju C5 .
=SHORTNAME(B5,-1)
- Na kraju, da izdvojimo prezimena, zapisujemo sljedeću formulu u D5 :
=SHORTNAME(B5,1)
- Nakon toga, ako automatski ispunimo ostatak ćelija pomoću Rukovatelja popunjavanjem , vidjet ćemo željeni rezultat.
🎓 Kako funkcionira kod?
- Funkcija SHORTNAME(Naziv kao niz, First_or_Last kao cijeli broj)
Ona stvara novu funkciju pod nazivom SHORTNAME s jednim argumentom niza pod nazivom Naziv i jednim argumentom cijelog broja pod nazivom Prvo_ili_zadnje .
- Priguši prelom kao cijeli broj
Ovaj dio deklarira novu cjelobrojnu varijablu pod nazivom Break .
- Break = InStr(1, Name, ” “, 0)
Dodjeljuje vrijednost varijable Break kao izlaz funkcije InStr s argumentima 1, Ime, “ ” i 0 . Ukratko, ovo dodjeljuje poziciju u Nazivu gdje postoji razmak (“ ”).
- If First_or_Last = -1 Then SHORTNAME = Left(Name, Break – 1)
Ovaj redak dodjeljuje izlaz funkcije SHORTNAME kao znakove prije razmaka , ako je argument Prvi_ili_Zadnji -1. Ovo je prvo ime.
- SHORTNAME = Right(Name, Len(Name) – Break)
Ovaj dio dodjeljuje izlaz SHORTNAME funkcionira kao znakovi nakon razmaka , ako je argument Ime_ili_Prezime 1. Ovo je prezime.
Zaključak
Na ovaj način možete pisati VBA kodove s funkcijom InStr koja pronalazi položaj određenog niza unutar drugog zadanog string, a zatim možete kreirati vlastite funkcije za različite namjene. Nadalje, ako imate bilo kakvih pitanja, slobodno nas pitajte.