InStr-funktion käyttö VBA:ssa (3 helppoa esimerkkiä)

  • Jaa Tämä
Hugh West

Excel VBA -koodien parissa työskennellessämme törmäämme muutamiin sisäänrakennettuihin funktioihin, jotka muuttavat monimutkaisen tehtävän pieneksi yksiriviseksi koodiksi. InStr on tällainen Excel VBA:ssa käytettävissä oleva funktio, joka etsii tiettyä merkkijonoa toisesta merkkijonosta tietystä kohdasta alkaen. Tänään näytän, miten voit käyttää funktiota InStr toimintoa VBA:ssa tietyn merkkijonon etsimiseen toisesta annetusta merkkijonosta.

Lataa harjoituskirja

InStr-funktio.xlsm

Johdanto VBA InStr-funktio

  • Yhteenveto

Etsii tiettyä merkkijonoa annetusta merkkijonosta, alkaen annetusta kohdasta. Jos löytää osuman, palauttaa kohdan annetussa merkkijonossa, josta osuma alkoi.

  • Syntaksi

InStr([alku],string1,string2,[vertaa])

  • Argumentit
ARGUMENTTI VAATIMUS KUVAUS

[start] Valinnainen Asema, josta haku aloitetaan. Oletusarvo on 1.
string1 Vaadittu Merkkijono, jonka sisällä se etsii tiettyä merkkijonoa.
string2 Vaadittu Merkkijono, jota etsitään tietyn merkkijonon sisältä.
[vertaa] Valinnainen Numeerinen arvo välillä {-1,0,1,2}, joka määrittää vertailun tyypin. Oletusarvo on -1 (vbUseCompareOption). Jos Option Compare -lauseketta ei ole määritetty, suoritetaan binäärivertailu.

Huom:

  • Vaikka [start] argumentti ja [vertaa] argumentti on valinnainen, tarvitset [start] argumentti, jos määrität [vertaa] Muussa tapauksessa se aiheuttaa virheen.
  • Jos jompikumpi tai molemmat [start] argumentti ja [vertaa] argumentti on Null , saat virheilmoituksen.
  • Neljä määritettyä arvoa kohdassa [vertaa] argumentti suorittaa neljä erilaista vertailua, jotka mainitaan jäljempänä:
ARVO VAKIO KUVAUS

-1 vbUseCompareOption Suorittaa Option Compare -lauseessa määritetyn vertailun.
0 vbBinaryCompare Suorittaa binäärivertailun.
1 vbTextCompare Suorittaa tekstivertailun.
2 vbDatabaseCompare Suorittaa tietokantaan perustuvan vertailun.
  • Vaihtoehto Vertaile lauseke on lauseke, joka annetaan ennen VBA-pääkoodin aloittamista. Se määrittää, etsitäänkö koodissa tarvittaessa binäärivertailua vai tekstivertailua.

Vaihtoehto Vertaa tekstiä

    • Yksinkertaisesti sanottuna , Binäärivertailu tarkoittaa isojen ja pienten kirjainten välistä vertailua.
    • Yksinkertaisesti sanottuna , Tekstin vertailu tarkoittaa isojen ja pienten kirjainten välistä vertailua.
  • Paluuarvo
    • Palauttaa sijainnin string1 josta string2 alkoi.
    • Jos string2 ei löydy string1 alkaen käynnistä asema, palauttaa 0.
    • Jos string1 on nollapituinen, palauttaa 0.
    • Jos string2 on nollapituinen, palauttaa argumentin käynnistä .
    • Ja lopuksi, jos jokin string1 tai string2 on Null palauttaa virheen.

3 helppoa esimerkkiä VBA:n InStr-funktion käytöstä

Tässä jaksossa näemme kolme helppoa esimerkkiä VBA:n soveltamisesta. InStr funktio Excelissä. Katsotaanpa ensimmäinen esimerkki Excelin InStr toiminto VBA-koodeissa.

1. Sen päättäminen, onko osoite sähköpostiosoite vai ei. käyttämällä VBA:n InStr-funktiota

Olemme ottaneet aineiston, joka sisältää joitakin asiakkaiden yhteysosoitteita. Tavoitteenamme on tunnistaa, ovatko osoitteet sähköpostiosoitteita vai eivät.

Nyt kehitämme VBA-koodin käyttämällä työkalua InStr toiminnon avulla voit tunnistaa, onko kyseessä sähköpostiosoite vai ei. Seuraa alla olevia ohjeita.

Vaiheet:

  • Alussa mene osoitteeseen Kehittäjä välilehti ja valitse Visual Basic ( Tai paina Alt+F11) avataksesi VBA ikkuna.

  • Sitten, kun VBA ikkuna, siirry kohtaan Lisää> Moduuli .

  • Liitä sen jälkeen moduuliin seuraava koodi:
 Function DECISION(string1 As String) Dim Position As Integer Position = InStr(1, string1, "@", 0) If Position = 0 Then DECISION = "Ei sähköposti" Else DECISION = "Sähköposti" End If End If End Function 

  • Lisäksi olemme luoneet funktion nimeltä PÄÄTÖS Se päättää, onko osoite sähköpostiosoite vai ei. Sovelletaan funktiota olemassa olevaan tietokokonaisuuteen.
  • Solussa C5 , kirjoita seuraava kaava ja täytä sitten loput solut automaattisesti käyttäen Täyttökahva .
=DECISION(B5)

  • Kuten näemme, olemme tunnistaneet jokaisen osoitteen riippumatta siitä, onko se sähköpostiosoite vai ei.

🎓 Miten koodi toimii?

  • Function DECISION(string1 As String)

Ensinnäkin tämä luo funktion nimeltä PÄÄTÖS merkkijonoargumentilla nimeltä string1 .

  • Dim Position As Integer

Se ilmoittaa kokonaislukumuuttujan nimeltä Asema .

  • Position = InStr(1, string1, "@", 0)

Tämä määrittää arvon Asema muuttujan tulosteena InStr funktio argumenteilla 1, string1, "@" ja 0 Lyhyesti sanottuna, tämä määrittää osoitteen kohdan, jossa on "@" .

  • If Position = 0 Then DECISION = "Not Email" (Ei sähköpostia)

Se määrittää tulosteen PÄÄTÖS toimii kuten "Ei sähköpostia" , jos Asema muuttuja on 0 , eli ei ollut mitään "@" osoitteessa.

(Muistutetaan, että jos mitään merkkijonoa ei löydy annetusta merkkijonosta, merkkijono InStr funktio palauttaa 0 ).

  • Else DECISION = "Sähköposti"

Tämä määrittää tulosteen PÄÄTÖS toimii kuten "Sähköposti" jos olisi "@" Osoitteet, joissa on osoite. "@" luokitellaan seuraavasti Sähköposti ja loput luokitellaan seuraavasti "Ei sähköpostia" .

Samanlaisia lukemia

  • VBA UCASE -toiminnon käyttäminen Excelissä (4 esimerkkiä)
  • Käytä MsgBox-funktiota Excel VBA: ssa (täydellinen ohje)
  • VBA SPLIT -toiminnon käyttäminen Excelissä (5 esimerkkiä)
  • Käytä LCase-funktiota VBA: ssa Excelissä (4 esimerkkiä)
  • Kuinka käyttää Fix-funktiota Excel VBA: ssa (4 esimerkkiä)?

2. Hyödyntämällä VBA InStr-funktio varten Joidenkin sähköpostiosoitteiden laajennuksen poimiminen ulospäin

Tässä meillä on luettelo joidenkin asiakkaiden sähköpostiosoitteista. Tällä kertaa poimimme sähköpostiosoitteen laajennuksen, kuten sen, onko heillä jokin sähköpostiosoite. gmail.com tai yahoo.com .

Seuraa alla olevia ohjeita.

Vaiheet:

  • Aluksi, kuten edellisessä menetelmässä, avaa uusi uusi VBA moduuli ja liitä seuraava koodi ikkunaan.
 Function EXTENSION(Email As String) Dim Position As Integer Position = InStr(1, Email, "@", 0) EXTENSION = Right(Email, (Len(Email) - Position)) End Function 

  • Lisäksi olemme luoneet funktion nimeltä EXTENSION Se poimii minkä tahansa sähköpostiosoitteen laajennuksen.
  • Sovelletaan tätä funktiota myös olemassa oleviin tietoihin. Kirjoitetaan ensin tämä kaava soluun C5 ja kaksoisnapsauta sitten Täyttökahva .
=EXTENSION(B5)

  • Lopuksi voimme nähdä, että olemme onnistuneesti poimineet kaikkien sähköpostien laajennuksen.

🎓 Miten koodi toimii?

  • Function EXTENSION(Email As String)

Tämä luo uuden funktion nimeltä EXTENSION , jossa on merkkijonoargumentti nimeltä Sähköposti .

  • Dim Position As Integer

Tässä osassa ilmoitetaan kokonaislukumuuttuja nimeltä Asema.

  • Position = InStr(1, Email, "@", 0)

Tämä määrittää arvon Asema muuttujan tulosteena InStr funktio argumenteilla 1, Sähköposti, "@" ja 0 Lyhyesti sanottuna, tämä osoittaa aseman vuonna Sähköposti jossa on "@" .

  • EXTENSION = Right(Email, (Len(Email) - Position))

Tämä osa määrittää tulosteen EXTENSION funktiona symbolin jälkeisinä merkkeinä "@" Tämä on vaadittu jatko Sähköposti .

3. Etu- tai sukunimen poimiminen nimestä käyttämällä VBA:n InStr-funktiota

Lopuksi suoritamme täysin erilaisen tehtävän. Tällä kertaa meillä on yrityksen joidenkin työntekijöiden nimet. Yritämme rakentaa funktion, joka poimii joko työntekijöiden etu- tai sukunimen.

Seuraa alla olevia ohjeita.

Vaiheet:

  • Ensinnäkin, kuten menetelmä 1 Liitä alla oleva koodi VBA-ikkunan uuteen moduuliin.
 Function SHORTNAME(Name As String, First_or_Last As Integer) Dim Break As Integer Break = InStr(1, Name, " ", 0) If First_or_Last = -1 Then SHORTNAME = Left(Name, Break - 1) Else SHORTNAME = Right(Name, Len(Name) - Break) End If End Function 

  • Tässä olemme luoneet funktion nimeltä LYHYTNIMI joka poimii nimestä joko etunimen tai sukunimen. Sovelletaan tätä kaavaa tietojoukkoomme.
  • Kirjoita aluksi seuraava kaava soluun, jotta voit poimia etunimen. C5 .
=SHORTNAME(B5,-1)

  • Lopuksi, jotta voimme poimia sukunimet, kirjoitamme seuraavan kaavan muotoon D5 :
=SHORTNAME(B5,1)

  • Sen jälkeen, jos täytämme loput solut automaattisesti soluilla nimellä Täyttökäsittelijä , näemme haluamamme tuloksen.

🎓 Miten koodi toimii?

  • Function SHORTNAME(Name As String, First_or_Last As Integer)

Se luo uuden funktion nimeltä LYHYTNIMI yhdellä String-argumentilla nimeltä Nimi ja yksi kokonaislukuargumentti nimeltä Ensimmäinen_tai_viimeinen .

  • Dim Break As Integer

Tässä osassa ilmoitetaan uusi kokonaislukumuuttuja nimeltä Tauko .

  • Break = InStr(1, Nimi, " ", 0)

Se määrittää arvon Tauko muuttujan tulosteena InStr funktio argumenteilla 1, Nimi, " " ja 0 Lyhyesti sanottuna, tämä osoittaa aseman vuonna Nimi jossa on välilyönti (" ").

  • If First_or_Last = -1 Then SHORTNAME = Left(Name, Break - 1)

Tämä rivi määrittää tulosteen LYHYTNIMI toiminto merkkeinä ennen avaruus , jos Ensimmäinen_tai_viimeinen argumentti on -1. Tämä on ensimmäinen nimi.

  • SHORTNAME = Right(Nimi, Len(Nimi) - Break)

Tämä osa määrittää tulosteen LYHYTNIMI toiminto merkkeinä merkin avaruus , jos Ensimmäinen_tai_viimeinen argumentti on 1. Tämä on sukunimi.

Päätelmä

Tällä tavoin voit kirjoittaa VBA-koodeja, joissa on InStr funktio, joka selvittää tietyn merkkijonon sijainnin toisen merkkijonon sisällä, ja sitten voit luoda omia funktioita erilaisiin käyttötarkoituksiin. Lisäksi, jos sinulla on kysyttävää, voit kysyä meiltä rohkeasti.

Hugh West on erittäin kokenut Excel-kouluttaja ja analyytikko, jolla on yli 10 vuoden kokemus alalta. Hän on koulutukseltaan laskentatoimen ja rahoituksen kandidaatti sekä kauppatieteiden maisteri. Hughilla on intohimo opettamiseen, ja hän on kehittänyt ainutlaatuisen opetusmenetelmän, jota on helppo seurata ja ymmärtää. Hänen asiantuntemuksensa Excelistä on auttanut tuhansia opiskelijoita ja ammattilaisia ​​maailmanlaajuisesti parantamaan taitojaan ja menestymään urallaan. Blogissaan Hugh jakaa tietämyksensä maailman kanssa tarjoamalla ilmaisia ​​Excel-opetusohjelmia ja verkkokoulutusta auttaakseen yksilöitä ja yrityksiä saavuttamaan täyden potentiaalinsa.