Kako koristiti InStr funkciju u VBA (3 jednostavna primjera)

  • Podijeli Ovo
Hugh West

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.

Hugh West vrlo je iskusan Excel trener i analitičar s više od 10 godina iskustva u industriji. Diplomirao je računovodstvo i financije te magistrirao poslovno upravljanje. Hugh ima strast za podučavanjem i razvio je jedinstveni pristup podučavanju koji je lako pratiti i razumjeti. Njegovo stručno poznavanje programa Excel pomoglo je tisućama studenata i profesionalaca diljem svijeta da poboljšaju svoje vještine i postignu uspjeh u karijeri. Putem svog bloga, Hugh dijeli svoje znanje sa svijetom, nudeći besplatne vodiče za Excel i online obuku kako bi pomogao pojedincima i tvrtkama da dostignu svoj puni potencijal.