Excel VBA InStr -toiminto - selitetty esimerkeillä

Sisällysluettelo

Eilen sain sähköpostin eräältä lukijaltani - kesäkuu.

Hän halusi tietää, miten lihavoitua kirjasinformaattia voidaan käyttää solun jonoon tiettyyn osaan. Käytä esimerkiksi lihavoitua muotoa vain "Hello World" -sanaan "Hello".

Ja hän halusi tehdä tämän sadoille soluille kerralla.

Koska Excelissä ei ole sisäänrakennettua toimintoa, joka voi tehdä sen, loin yksinkertaisen makron, joka käyttää Excel VBA InStr -toiminto (näet kuinka tämä tehdään tämän opetusohjelman esimerkissä 4).

Mutta ensin katsotaan, miten Excel VBA InStr -toiminto toimii!

Excel VBA InStr -toiminto

Tässä opetusohjelmassa selitän InStr -toiminnon käytön Excel VBA: ssa ja näen joitain käytännön esimerkkejä, joissa sitä voidaan käyttää.

Excel VBA InStr -toiminto - Johdanto

InStr -funktio löytää määritetyn alijonon sijainnin merkkijonosta ja palauttaa sen esiintymisen ensimmäisen sijainnin.

Jos esimerkiksi haluat löytää "x" -kohdan "Excelistä", Excel VBA InStr -toiminnon käyttäminen palauttaa 2.

InStr -funktion syntaksi

InStr ([Aloita], Jono1, Jono2, [Vertaa])
  • [Alkaa] - (valinnainen argumentti) tämä on kokonaisluku, joka kertoo InStr -toiminnolle aloituspaikan, josta sen pitäisi alkaa etsiä. Jos esimerkiksi haluan haun alkavan alusta, kirjoitan arvon 1. Jos haluan sen alkavan kolmannesta merkistä eteenpäin, käytän arvoa 3. Jos se jätetään pois, oletusarvo 1 otetaan.
  • Jono 1 - Tämä on pääjono (tai pääjono), josta haluat hakea. Jos esimerkiksi etsit x: n sijaintia Excelissä, merkkijono 1 olisi "Excel".
  • Jono2 - Tämä on etsimäsi alijono. Jos esimerkiksi etsit x: n sijaintia Excelissä, merkkijono2 olisi x.
  • [Vertailla] - (valinnainen argumentti) Voit määrittää [vertaa] -argumentille yhden seuraavista kolmesta arvosta:
    • vbBinaryCompare - Tämä tekisi hahmokohtaisen vertailun. Jos esimerkiksi etsit "x" Excelistä, se palauttaa 2, mutta jos etsit "X" Excelistä, se palauttaa 0, koska X on iso kirjain. Voit käyttää myös 0: ta vbBinaryCompare -ohjelman sijaan. Jos [Vertaa] -argumentti jätetään pois, tämä on oletusarvo.
    • vbTextCompare - Tämä tekisi tekstillisen vertailun. Jos esimerkiksi etsit Excelistä "x" tai "X", se palauttaa 2 molemmissa tapauksissa. Tämä väite sivuuttaa kirjeen. Voit käyttää myös 1: tä vbTextComparen sijasta.
    • vbDatabaseCompare - Tätä käytetään vain Microsoft Accessissa. Se käyttää tietokannan tietoja vertailun suorittamiseen. Voit myös käyttää kahta versiota vbDatabaseCompare.

Lisätietoja Excel VBA InStr -toiminnosta:

  • InStr on VBA -toiminto eikä laskentataulukkofunktio. Tämä tarkoittaa, että et voi käyttää sitä laskentataulukossa.
  • Jos merkkijono2 (joka on alimerkkijono, jonka sijaintia etsit) on tyhjä, funktio palauttaa [Aloita] -argumentin arvon.
  • Jos InStr -funktio ei löydä päämerkkijonon alimerkkijonoa, se palauttaa arvon 0.

Katsotaanpa nyt esimerkkiä Excel VBA InStr -toiminnon käytöstä

Esimerkki 1 - Sijainnin löytäminen alusta

Tässä esimerkissä käytän InStr -toimintoa löytääksesi V: n sijainnin Excel VBA: ssa alusta alkaen.

Koodi tälle olisi:

Sub FindFromBeginning () Dim Position As Integer Position = InStr (1, "Excel VBA", "V", vbBinaryCompare) MsgBox Position End Sub

Kun suoritat tämän koodin, se näyttää viestiruudun, jonka arvo on 7, joka on "V" -merkki merkkijonossa "Excel VBA".

Esimerkki 2 - Sijainnin löytäminen toisen sanan alusta

Oletetaan, että haluan löytää "-aseman" lauseesta - "Nopea ruskea kettu hyppää laiskan koiran yli"

Haluan kuitenkin, että haku aloitetaan toisesta sanasta eteenpäin.

Tässä tapauksessa meidän on muutettava [Aloita] -argumentti varmistaaksesi, että se määrittää paikan, josta toinen sana alkaa.

Tässä on koodi, joka tekee tämän:

Sub FindFromSecondWord () Dim Position As Integer Position = InStr (4, "Nopea ruskea kettu hyppää laiskan koiran yli", "the", vbBinaryCompare) MsgBox Position End Sub

Tämä koodi näyttää viestiruudun, jonka arvo on 32, koska olemme määrittäneet aloituskohdan 4. Siksi se jättää huomiotta ensimmäisen "The": n ja löytää toisen "the" lauseesta.

Jos haluat tehdä siitä dynaamisemman, voit parantaa koodia siten, että se jättää automaattisesti huomiotta ensimmäisen sanan.

Tässä on parannettu koodi, joka tekee tämän:

Sub FindFromSecondWord () Dim StartingPosition kokonaislukuna Dim Sijoitus kokonaislukuna StartingPosition = InStr (1, "Nopea ruskea kettu hyppää laiskan koiran yli", "", vbBinaryCompare) Position = InStr (StartingPosition, "Nopea ruskea kettu hyppää laiskan yli koira "," the ", vbBinaryCompare) MsgBox Position End Sub

Tämä koodi löytää ensin välilyönnin sijainnin ja tallentaa sen muuttujaan StartingPosition.

Sitten se käyttää tätä muuttujaa lähtökohtana etsimään sanaa "the".

Siksi se palauttaa 32 (joka on "sanan" aloituskohta ensimmäisen sanan jälkeen).

Esimerkki 3 - @ -paikan löytäminen sähköpostiosoitteesta

Voit helposti luoda mukautetun funktion löytääksesi @: n sijainnin sähköpostiosoitteessa Excel VBA InStr -toiminnon avulla.

Tässä on koodi mukautetun toiminnon luomiseksi:

Toiminto FindPosition (viite alueena) kokonaislukuna Dim Sijoitus kokonaislukuna Sijoitus = InStr (1, viite, "@") FindPosition = Sijainti Loppufunktio

Nyt voit käyttää tätä mukautettua toimintoa kuin mitä tahansa muuta laskentataulukkotoimintoa. Se ottaa soluviittauksen syötteeksi ja antaa sijainnin @ siinä.

Voit myös luoda mukautetun funktion löytääksesi minkä tahansa päämerkkijonon alijonon sijainnin.

Esimerkki 4 - Merkkijonon osan korostaminen soluissa

Tämä on kysely, jonka kesäkuu esitti (lukijani, joka myös inspiroi minua kirjoittamaan tämän opetusohjelman).

Tässä on esimerkkitiedot muodossa, jonka kesäkuu lähetti minulle:

Hänen kyselynsä oli tehdä hakasulkeessa olevat numerot lihavoituiksi.

Tässä on luomani koodi, joka tekee tämän:

Alilihavoitu () Dim rCell As Range Dim Char kokonaislukuna jokaiselle valitulle solulle CharCount = Len (rCell) Char = InStr (1, rCell, "(") rCell.Characters (1, Char - 1) .Font.Bold = True Next rCell End Sub

Yllä oleva koodi kulkee jokaiselle silmukalle kunkin valitun solun läpi. Se tunnistaa avauskannattimen merkin sijainnin InStr -toiminnon avulla. Sen jälkeen hakasulkeessa olevan tekstin fontti muuttuu.

Jotta voit käyttää tätä koodia, sinun on kopioitava ja liitettävä moduuli VB -editorissa.

Kun olet kopioinut ja liittänyt koodin, valitse solut, joissa haluat tehdä tämän muotoilun, ja suorita makro (kuten alla on esitetty).

Saatat pitää myös seuraavista Excel VBA -opetusohjelmista:

  • Excel VBA SPLIT -toiminto.
  • VBA TRIM -toiminto.
  • Lopullinen opas Excel VBA -silmukoihin.
  • Aloittelijan opas seuraavan silmukan käyttöön Excel VBA: ssa.
  • Excel-apuohjelman luominen ja käyttö
  • Useiden työkirjojen yhdistäminen yhdeksi Excel -työkirjaksi.
  • Värillisten solujen laskeminen Excelissä.
  • Hyödyllisiä Excel VBA -makroesimerkkejä aloittelijoille.
  • Tietojen lajitteleminen Excelissä VBA: n avulla (vaiheittainen opas)

Tulet auttaa kehittämään sivuston jakaminen sivu ystävillesi

wave wave wave wave wave