Sisällysluettelo
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.