Kazalo
Pri delu s kodami Excel VBA naletimo na nekaj vgrajenih funkcij, ki zapleteno nalogo spremenijo v majhno enovrstično kodo. InStr je takšna funkcija, ki je na voljo v Excel VBA in išče določen niz v drugem danem nizu z začetkom na danem mestu. Danes bom prikazal, kako lahko uporabite funkcijo InStr funkcijo v VBA za iskanje določenega niza v drugem danem nizu.
Prenesi delovni zvezek za prakso
InStr Function.xlsm
Uvod v Funkcija VBA InStr
- Povzetek
Poišče določen niz v danem nizu z začetkom na danem mestu. Če najde ujemanje, vrne mesto v danem nizu, na katerem se je ujemanje začelo.
- Sintaksa
InStr([start],string1,string2,[compare])
- Argumenti
ARGUMENT | ZAHTEVA | OPIS |
---|---|---|
[start] | Izbirno | Položaj, s katerega se začne iskanje. Privzeto je 1. |
niz1 | Zahtevano | Niz, v katerem išče dani niz. |
niz2 | Zahtevano | Niz, ki ga išče v danem nizu. |
[primerjaj] | Izbirno | Številčna vrednost med {-1,0,1,2}, ki določa vrsto primerjave. Privzeta vrednost je -1 (vbUseCompareOption). Če izjava Option Compare ni določena, se izvede binarna primerjava. |
Opomba:
- Čeprav je [start] argument in [primerjaj] argumenta nista obvezna, potrebujete [start] če navedete argument [primerjaj] V nasprotnem primeru se prikaže napaka.
- Če je eden ali oba [start] argument in [primerjaj] argument je Null , boste naleteli na napako.
- Štiri navedene vrednosti v [primerjaj] argument opravi štiri različne vrste primerjav, ki so navedene spodaj:
VREDNOST | KONSTANTA | OPIS |
---|---|---|
-1 | vbUseCompareOption | Izvede primerjavo, določeno v stavku Option Compare. |
0 | vbBinaryCompare | Izvede binarno primerjavo. |
1 | vbTextCompare | Izvede primerjavo besedila. |
2 | vbDatabaseCompare | Izvede primerjavo na podlagi vaše zbirke podatkov. |
- Primerjava možnosti je stavek, ki se navede pred začetkom glavne kode VBA. Določa, ali bo koda po potrebi iskala binarno primerjavo ali besedilno primerjavo.
Možnost Primerjava besedila
- Preprosto povedano , binarna primerjava pomeni primerjavo, občutljivo na velikost črk.
- Preprosto povedano , Primerjava besedil pomeni primerjavo brez upoštevanja velikih in malih črk.
- Vrnjena vrednost
- Vrne položaj v niz1 iz katerega je niz2 začel.
- V primeru niz2 se ne nahaja v niz1 začenši z začetek položaj, vrne 0.
- Če je niz1 ima dolžino nič, vrne 0.
- Če je niz2 je dolžine nič, vrne argument začetek .
- In končno, če je kateri koli od niz1 ali niz2 je . Null , vrne napako.
3 enostavni primeri za uporabo funkcije VBA InStr
V tem razdelku si bomo ogledali tri enostavne primere uporabe VBA InStr v Excelu. Oglejmo si prvi primer funkcije InStr funkcijo v kodah VBA.
1. Odločitev, ali je naslov e-poštni naslov ali ne z uporabo funkcije VBA InStr
V tem primeru smo vzeli niz podatkov, ki vsebuje nekaj kontaktnih naslovov strank. Naš cilj bo ugotoviti, ali so naslovi e-poštni naslovi ali ne.
Zdaj bomo razvili kodo VBA z uporabo InStr da ugotovite, ali gre za e-poštni naslov ali ne. Za to sledite spodnjim korakom.
Koraki:
- Na začetku pojdite v Razvijalec in izberite zavihek Visual Basic ( Ali pritisnite Alt+F11) da odprete VBA okno.
- Nato na VBA v oknu pojdite v Vstavljanje> Modul .
- Nato v modul prilepite naslednjo kodo:
Funkcija DECISION(string1 As String) Dim Position As Integer Position = InStr(1, string1, "@", 0) If Position = 0 Then DECISION = "Not Email" Else DECISION = "Email" End If End Function
- Poleg tega smo ustvarili funkcijo z imenom SKLEP Funkcija odloči, ali je naslov e-poštni naslov ali ne. Uporabimo funkcijo za nabor podatkov, ki ga imamo.
- V celici C5 , zapišite naslednjo formulo in nato samodejno izpolnite preostale celice z uporabo Ročaj za polnjenje .
=DECISION(B5)
- Kot lahko vidimo, smo vsak naslov prepoznali ne glede na to, ali gre za e-poštni naslov ali ne.
🎓 Kako deluje koda?
- Funkcija DECISION(string1 kot niz)
Najprej se ustvari funkcija z imenom SKLEP z argumentom v obliki niza z imenom niz1 .
- Dim Položaj kot celoštevilsko število
Deklarira celoštevilsko spremenljivko z imenom Položaj .
- Položaj = InStr(1, string1, "@", 0)
S tem se dodeli vrednost Položaj spremenljivko kot izhodno datoteko InStr funkcijo z argumenti 1, string1, "@" in . 0 . Skratka, to pripisuje položaj v naslovu, kjer je "@" .
- Če položaj = 0, potem SKLEP = "Ni e-pošte"
Pripisuje izhodno vrednost SKLEP funkcijo kot "Ne e-pošta" , če je Položaj spremenljivka je 0 , kar pomeni, da ni bilo "@" v naslovu.
(Če v danem nizu ne najdemo nobenega niza, se InStr funkcija vrne 0 ).
- Drugače SKLEP = "E-pošta"
S tem se dodeli izhodna vrednost SKLEP funkcijo kot "E-pošta" če je bil "@" v naslovu. Tako so naslovi, na katerih je "@" so razvrščeni v naslednje kategorije E-pošta , ostali pa so razvrščeni v naslednje kategorije "Ne e-pošta" .
Podobna branja
- Kako uporabiti funkcijo VBA UCASE v Excelu (4 primeri)
- Uporaba funkcije MsgBox v programu Excel VBA (popolna navodila)
- Kako uporabljati funkcijo VBA SPLIT v Excelu (5 primerov)
- Uporaba funkcije LCase v VBA v Excelu (s 4 primeri)
- Kako uporabiti funkcijo Fix v programu Excel VBA (4 primeri)
2. Uporaba funkcije VBA InStr za Izločanje razširitve nekaterih e-poštnih naslovov
Tu imamo seznam nekaterih e-poštnih naslovov nekaterih strank. Tokrat bomo izpisali razširitev e-poštnega naslova, na primer ali imajo gmail.com ali yahoo.com .
Če želite to storiti, sledite naslednjim korakom.
Koraki:
- Za začetek, tako kot pri prejšnji metodi, odprite novo VBA modul in v okno prilepite naslednjo kodo.
Funkcija EXTENSION(Email As String) Dim Position As Integer Position = InStr(1, Email, "@", 0) EXTENSION = Right(Email, (Len(Email) - Position)) End Function
- Poleg tega smo ustvarili funkcijo z imenom RAZŠIRITEV . Izvleče razširitev katerega koli e-poštnega naslova.
- Poleg tega uporabimo to funkcijo za niz podatkov, ki ga imamo. Najprej v celico vnesite to formulo C5 in nato dvakrat kliknite na Ročaj za polnjenje .
=RAZTEŽEK(B5)
- Na koncu lahko vidimo, da smo uspešno izluščili razširitev vseh e-poštnih sporočil.
🎓 Kako deluje koda?
- Funkcija EXTENSION(E-pošta kot niz)
To ustvari novo funkcijo z imenom RAZŠIRITEV , z argumentom v obliki niza z imenom E-pošta .
- Dim Položaj kot celoštevilsko število
Ta del deklarira celoštevilsko spremenljivko z imenom Položaj.
- Položaj = InStr(1, E-pošta, "@", 0)
S tem se dodeli vrednost Položaj spremenljivko kot izhodno datoteko InStr funkcijo z argumenti 1, e-pošta, "@" in . 0 . Skratka, s tem je položaj v E-pošta kjer je "@" .
- RAZŠIRITEV = Desno(Email, (Len(Email) - Položaj))
Ta del dodeli izhodno vrednost RAZŠIRITEV funkcijo znakov za simbolom "@" To je zahtevana razširitev E-pošta .
3. Izločanje imena ali priimka iz imena z uporabo funkcije VBA InStr
Na koncu bomo opravili povsem drugačno nalogo. Tokrat imamo na voljo imena nekaterih zaposlenih v podjetju. Poskusili bomo sestaviti funkcijo, ki bo izbrala bodisi prvo ime bodisi priimek zaposlenih.
Če želite to storiti, sledite naslednjim korakom.
Koraki:
- Prvič, podobno kot metoda 1 , prilepite spodnjo kodo v nov modul v oknu VBA.
Funkcija SHORTNAME(Ime kot niz, First_or_Last As Integer) Dim Break As Integer Break = InStr(1, Ime, " ", 0) If First_or_Last = -1 Then SHORTNAME = Left(Ime, Break - 1) Else SHORTNAME = Right(Ime, Len(Ime) - Break) End If End Function
- Tukaj smo ustvarili funkcijo z imenom KRATKO IME ki iz imena izvleče ime ali priimek. Uporabimo to formulo za naš niz podatkov.
- Če želite najprej izpisati prvo ime, zapišite spodnjo formulo v celico C5 .
= SKRAJŠANO IME(B5,-1)
- Za izpis priimkov zapišemo naslednjo formulo v D5 :
= SKRAJŠANO IME(B5,1)
- Če nato preostale celice samodejno zapolnimo z Obvladovalec polnjenja , bomo videli želeni rezultat.
🎓 Kako deluje koda?
- Funkcija SHORTNAME(Ime kot niz, First_or_Last kot celo število)
Ustvari novo funkcijo z imenom KRATKO IME z enim argumentom String z imenom Ime in en celoštevilski argument z imenom First_or_Last .
- Dim Break kot celoštevilsko število
Ta del deklarira novo celoštevilsko spremenljivko z imenom Prekinitev .
- Break = InStr(1, Ime, " ", 0)
Pripisuje vrednost Prekinitev spremenljivko kot izhodno datoteko InStr funkcijo z argumenti 1, ime, " " in . 0 . Skratka, s tem je položaj v Ime kjer je presledek (" ").
- If First_or_Last = -1 Then SHORTNAME = Left(Ime, Break - 1)
Ta vrstica dodeli izhodno vrednost KRATKO IME funkcijo kot znaki pred prostor , če je First_or_Last argument je -1. To je prvo ime.
- SHORTNAME = Desno(Ime, Len(Ime) - Break)
Ta del dodeli izhodno vrednost KRATKO IME funkcijo kot znaki za prostor , če je First_or_Last argument je 1. To je priimek.
Zaključek
Na ta način lahko pišete kode VBA z InStr funkcijo, ki ugotovi položaj določenega niza v drugem danem nizu, nato pa lahko ustvarite lastne funkcije za različne namene. Poleg tega nas lahko vprašate, če imate kakršnakoli vprašanja.