Eilen sain sähköpostin yhdeltä lukijalta – kesäkuu.
Hän halusi osaa käyttää lihavoitua fonttimuotoa merkkijonon tiettyyn osaan solussa. Käytä esimerkiksi lihavoitua muotoa vain sanaan ”Hello” sanasta ”Hello World”.
Ja hän halusi tehdä tämän sadoille soluille kerralla.
Koska on olemassa ei sisäänrakennettua toiminnallisuutta Excelissä, joka voi tehdä sen, loin yksinkertaisen makron, joka käyttää Excel VBA InStr -toimintoa (näet, miten se tehdään tämän opetusohjelman esimerkissä 4).
Katsotaan ensin miten Excel VBA InStr -toiminto toimii!
Tämä opetusohjelma kattaa:
Excel VBA InStr -funktio
Tässä opetusohjelmassa selitän InStr-toiminnon käyttöä Excel VBA: ssa ja näen joitain käytännön esimerkkejä, joissa sitä voidaan käyttää.
Excel VBA InStr -funktio – esittely
InStr-funktio löytää määritetyn alimerkkijonon sijainti merkkijonossa ja palauttaa esiintymisen ensimmäisen sijainnin.
Jos haluat esimerkiksi löytää x: n sijainnin Excelistä, käytä Excel VBA InStr -funktiota palauttaa arvon 2.
InStr-funktion syntaksit
- – (valinnainen argumentti) tämä on kokonaislukuarvo, joka kertoo InStr-funktiolle aloituskohdan, josta sen pitäisi alkaa etsiä. Esimerkiksi, jos haluan haun alkavan alusta, kirjoitan arvoksi 1. Jos haluan, että se alkaa kolmannesta merkistä eteenpäin, käytän numeroa 3. Jos se jätetään pois, oletusarvo on 1.
- Merkkijono1 – Tämä on päämerkkijono (tai ylätason merkkijono), josta haluat etsiä. Jos esimerkiksi etsit x-sijaintia Excelissä, merkkijono 1 olisi ”Excel”.
- Merkkijono2 – Tämä on etsimäsi alimerkkijono. Esimerkiksi, jos olet Etsitään x: n sijaintia Excelissä, merkkijono2 olisi x.
- – (valinnainen argumentti) Voit määrittää yhden seuraavista kolmesta arvosta argumentille:
- vbBinaryCompare – Tämä tekisi merkin merkkien vertailun perusteella. Jos esimerkiksi etsit x: tä Excelistä, se palauttaa 2, mutta jos etsit X: ää Excelissä, se palauttaa 0, koska X on yläosassa. Voit käyttää myös 0: ta vbBinaryCompare-arvon sijasta. Jos argumentti jätetään pois, tämä pidetään oletuksena.
- vbTextCompare – Tämä tekisi tekstivertailun. Esimerkiksi, jos etsit x: tä tai ’X’ Excelissä, se palauttaisi molemmissa tapauksissa 2. Tämä argumentti jättää kirjainkokojen huomiotta. Voit myös käyttää 1: tä vbTextCompare: n sijaan.
- vbDatabaseCompare – Tätä käytetään vain Microsoft Accessille. käyttää tietoja tietokannasta vertailun suorittamiseksi. Voit käyttää myös 2: ta vbDatabaseCompare-toiminnon sijaan.
Lisähuomautuksia Excel VBA InStr -toiminnosta:
- InStr on VBA toiminto eikä laskentataulukon toiminto. Tämä tarkoittaa, että et voi käyttää sitä laskentataulukossa.
- Jos merkkijono2 (joka on alimerkkijono, jonka sijaintia etsit) on tyhjä, funktio palauttaa argumentin arvon.
- Jos InStr-funktio ei löydä alimerkkijonoa päämerkkijonosta, se palauttaisi arvon 0.
Katsotaanpa nyt esimerkki Excel VBA InStr -funktion käytöstä
Esimerkki 1 – Sijainnin etsiminen alusta
Tässä esimerkissä käytän InStr-funktiota etsimään V: n sijainnin Excel VBA: sta alusta alkaen.
Tämän koodi olisi seuraava:
Sub FindFromBeginning()Dim Position As IntegerPosition = InStr(1, "Excel VBA", "V", vbBinaryCompare)MsgBox PositionEnd Sub
Kun suoritat tämän koodin, se näyttää viestiruudun, jonka arvo on 7, on V: n sijainti merkkijonossa ”Excel VBA”.
Esimerkki 2 – Sijainnin etsiminen toisen sanan alusta
Oletetaan, että haluan löytää sijainnin lauseen ”the” – ”Nopea ruskea kettu hyppää laiskan koiran yli”
Haluan kuitenkin haun aloita toisesta sanasta eteenpäin.
Tässä tapauksessa meidän on muutettava argumenttia varmistaaksemme, että se määrittää sijainnin, josta toinen sana alkaa.
Tässä on koodi, joka tekee tämän:
Sub FindFromSecondWord()Dim Position As IntegerPosition = InStr(4, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)MsgBox PositionEnd Sub
Tämä koodi näyttää viestiruudun arvon 32, koska olemme määrittäneet lähtökohdaksi 4. Siksi se jättää huomiotta ensimmäisen ’ ’Ja etsii toisen’ the ’lauseesta.
Jos haluat tehdä siitä dynaamisemman, voit parantaa koodia siten, että se jättää ensimmäisen sanan huomiotta.
Tässä on parannettu koodi, joka tekee tämän:
Sub FindFromSecondWord()Dim StartingPosition As IntegerDim Position As IntegerStartingPosition = InStr(1, "The quick brown fox jumps over the lazy dog", " ", vbBinaryCompare)Position = InStr(StartingPosition, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)MsgBox PositionEnd Sub
Tämä koodi löytää ensin välilyönnin sijainnin ja tallentaa sen muuttujaan StartingPosition.
Se käyttää sitten tätä muuttujaa lähtökohtana etsimään sanaa ’.
Siksi se palauttaa 32 (joka on’ the ’: n alkuasento ensimmäisen sanan jälkeen).
Esimerkki 3 – @ -aseman etsiminen sähköpostiosoitteesta
Voit helposti luoda mukautetun toiminnon löytääksesi @ -aseman sähköpostiosoitteesta Excel VBA InStr -toiminnon avulla.
Tässä on koodi mukautetun toiminnon luomiseen:
Nyt voit käyttää tätä mukautettua toimintoa minkä tahansa muun laskentataulukon funktiona. Se vie soluviitteen syötteeksi ja antaa sinulle sijainnin @ siinä.
Vastaavasti voit luoda mukautettu toiminto minkä tahansa alimerkkijonon paikan löytämiseksi päämerkkijonosta.
Esimerkki 4 – Merkitsemme osan merkkijonosta soluissa
Tämä on kysely, jonka kesäkuu kysyi joka inspiroi minua myös kirjoittamaan tämän opetusohjelman).
Tässä on esimerkkitiedot muodossa, jonka kesäkuu lähetti minulle:
Hänen kyselyksensä oli tehdä sulkujen ulkopuolella olevat numerot lihavoitaviksi.
Tässä on luomani koodi, joka tekee tämän:
Yllä oleva koodi käyttää For For -silmukkaa käydä läpi kaikki solut valinnassa. Se tunnistaa avaavan hakasulkumerkin sijainnin InStr-toiminnon avulla. Sen jälkeen se muuttaa tekstin kirjasimen ennen hakasulkeita.
Tämän koodin käyttämiseksi sinun on kopioitava ja liitettävä moduuliin VB-editorissa.
Kun olet kopioinut liitoksen koodin, valitse solut, joissa haluat tehdä tämän muotoilun, ja suorita makro (kuten alla on esitetty).
Saatat pitää myös seuraavista Excel VBA -oppaista:
- Excel VBA SPLIT -funktio.
- VBA TRIM -funktio.
- Ultimate Guide to Excel VBA Loops .
- Aloittelijan opas seuraavan silmukan käyttämiseen Excel VBA: ssa.
- Kuinka luoda ja käyttää Excel-apuohjelmaa.
- Kuinka yhdistää useita työkirjoja yhdeksi Excel-työkirjaksi.
- värillisten solujen laskeminen Excelissä.
- hyödyllisiä Excel VBA -makroesimerkkejä aloittelijoille.
- tietojen lajittelu Excelissä VBA: n avulla (Vaiheittainen opas)