Kako uporabiti funkcijo InStr v programu VBA (3 enostavni primeri)

  • Deliti To
Hugh West

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.

Hugh West je zelo izkušen trener Excela in analitik z več kot 10-letnimi izkušnjami v industriji. Po izobrazbi je diplomirani računovodstvo in finance ter magisterij poslovne administracije. Hugh ima strast do poučevanja in je razvil edinstven pristop k poučevanju, ki ga je enostavno slediti in razumeti. Njegovo strokovno znanje o Excelu je pomagalo na tisoče študentom in strokovnjakom po vsem svetu, da so izboljšali svoje sposobnosti in se izkazali v karieri. Prek svojega bloga Hugh deli svoje znanje s svetom, ponuja brezplačne vadnice za Excel in spletno usposabljanje, ki posameznikom in podjetjem pomaga doseči njihov polni potencial.