Funktsioon Excel VBA InStr - selgitatud näidetega

Lang L: none (table-of-contents)

Eile sain ühelt lugejalt meili - juuni.

Ta soovis teada, kuidas rakendada lahtris oleva stringi konkreetsele osale rasvast fondivormingut. Näiteks rakendage paksus vormingus ainult sõna „Tere” jaotisest „Tere maailm”.

Ja ta tahtis seda teha sadade rakkude jaoks korraga.

Kuna Excelis pole seda sisseehitatud funktsioone, lõin ma lihtsa makro, mis kasutab Exceli VBA InStr funktsioon (kuidas seda teha, näete selle õpetuse näites 4).

Kuid kõigepealt vaatame, kuidas Excel VBA InStr funktsioon töötab!

Funktsioon Excel VBA InStr

Selles õpetuses selgitan funktsiooni InStr kasutamist Excel VBA -s ja näen mõningaid praktilisi näiteid selle kasutamise kohta.

Funktsioon Excel VBA InStr - Sissejuhatus

Funktsioon InStr leiab stringi sees alamstringi asukoha ja tagastab selle esinemise esimese positsiooni.

Näiteks kui soovite leida „x” positsiooni „Excelist”, tagastaks Excel VBA InStr funktsiooni kasutamine 2.

Funktsiooni InStr süntaks

InStr ([Start], String1, String2, [Võrdle])
  • [Alusta] - (valikuline argument) see on täisarv, mis ütleb funktsioonile InStr lähtepositsiooni, kust see otsima peaks hakkama. Näiteks kui soovin, et otsing algaks algusest, sisestan väärtuseks 1. Kui soovin, et see algaks alates kolmandast tähemärgist, kasutan 3. Kui seda ei tehta, võetakse vaikeväärtus 1.
  • String1 - See on peamine string (või vanem string), millest soovite otsida. Näiteks kui otsite Excelist x -i positsiooni, oleks string 1 „Excel“.
  • String2 - See on alamstring, mida otsite. Näiteks kui otsite Excelist x -i positsiooni, oleks String2 x.
  • [Võrdlema] - (valikuline argument) Argumendi [võrdle] jaoks saate määrata ühe järgmistest kolmest väärtusest:
    • vbBinaryCompare - See võrdleks tähemärkide kaupa. Näiteks kui otsite 'Excelist' x ', tagastab see 2, kuid kui otsite' Excelist 'X', tagastab see 0, kuna X on suurtähtedega. Võite kasutada ka vbBinaryCompare asemel 0. Kui argument [Võrdle] jäetakse välja, peetakse seda vaikimisi.
    • vbTextCompare - See teeks tekstilise võrdluse. Näiteks kui otsite Excelis „x” või „X”, tagastab see mõlemal juhul 2. See argument ignoreerib kirjajuhtumit. Võite vbTextCompare asemel kasutada ka 1.
    • vbDatabaseCompare - Seda kasutatakse ainult Microsoft Accessi jaoks. See kasutab võrdluse tegemiseks andmebaasis olevat teavet. Samuti saate vbDatabaseCompare asemel kasutada 2.

Lisamärkused funktsiooni Excel VBA InStr kohta:

  • InStr on VBA funktsioon, mitte töölehe funktsioon. See tähendab, et te ei saa seda töölehel kasutada.
  • Kui string2 (see alamstring, mille positsiooni otsite) on tühi, tagastab funktsioon argumendi [Start] väärtuse.
  • Kui funktsioon InStr ei leia peastringist alamstringi, tagastab see 0.

Nüüd vaatame mõnda näidet Exceli VBA InStr funktsiooni kasutamise kohta

Näide 1 - positsiooni leidmine algusest peale

Selles näites kasutan funktsiooni InStr, et leida algusest peale „Excel VBA” asukoht „V”.

Selle kood oleks järgmine:

Sub FindFromBeginning () Dim positsioon täisarvuna Positsioon = InStr (1, "Excel VBA", "V", vbBinaryCompare) MsgBoxi positsiooni lõpp Alam

Selle koodi käivitamisel kuvatakse sõnumikast väärtusega 7, mis on „V” asukoht stringis „Excel VBA”.

Näide 2 - positsiooni leidmine teise sõna algusest

Oletame, et tahan leida lausest positsiooni "the" - "Kiire pruun rebane hüppab üle laisa koera"

Siiski tahan, et otsingud algaksid teise sõnaga.

Sel juhul peame argumenti [Start] muutma, et veenduda, et see määrab positsiooni, kust teine ​​sõna algab.

Siin on kood, mis seda teeb:

Sub FindFromSecondWord () Dim Position As Integer Position = InStr (4, "Kiire pruun rebane hüppab üle laisa koera", "the", vbBinaryCompare) MsgBox Positsiooni lõpp Alam

See kood näitab sõnumikast väärtusega 32, kuna oleme määranud lähtepositsiooni 4. Seega ignoreerib see esimest "The" ja leiab lausest teise "the".

Kui soovite seda dünaamilisemaks muuta, saate koodi täiustada nii, et see ignoreerib esimest sõna automaatselt.

Siin on täiustatud kood, mis seda teeb:

Sub FindFromSecondWord () Dim StartingPosition täisarvuna Dim Position täisarvuna StartingPosition = InStr (1, "Kiire pruun rebane hüppab üle laisa koera", "", vbBinaryCompare) Position = InStr (StartingPosition, "Kiire pruun rebane hüppab üle laisa koer "," the ", vbBinaryCompare) MsgBox Position End Sub

See kood leiab kõigepealt tühiku asukoha ja salvestab selle muutuja StartingPosition.

Seejärel kasutab see seda muutujat lähtepositsioonina sõna "the" otsimiseks.

Seega tagastab see 32 (mis on esimese sõna järel "the" lähtepositsioon).

Näide 3 - @ positsiooni leidmine e -posti aadressis

Funktsiooni Excel VBA InStr abil saate hõlpsasti luua kohandatud funktsiooni @ positsiooni leidmiseks e -posti aadressilt.

Siin on kood kohandatud funktsiooni loomiseks:

Funktsioon FindPosition (viide vahemikuna) täisarvuna Dim positsioon täisarvuna Positsioon = InStr (1, viide, "@") FindPosition = Positsiooni lõppfunktsioon

Nüüd saate seda kohandatud funktsiooni kasutada mis tahes muu töölehe funktsioonina. See võtab sisendiks lahtri viite ja annab teile @ asukoha selles.

Samamoodi saate luua kohandatud funktsiooni, et leida põhistringi mis tahes alamstringi asukoht.

Näide 4 - lahtris oleva stringi osa esiletõstmine

Just selle päringu esitas juuni (minu lugeja, kes inspireeris mind ka seda õpetust kirjutama).

Siin on näidisandmed, mille Juuni mulle saatis:

Tema päring oli muuta sulgudes olevad numbrid paksuks.

Siin on minu loodud kood, mis seda teeb:

Sub Bold () Dim rCell As Range Dim Char kui täisarv Iga valitud rCelli jaoks CharCount = Len (rCell) Char = InStr (1, rCell, "(") rCell.Characters (1, Char - 1) .Font.Bold = True Next rCell End Sub

Ülaltoodud kood kasutab valiku iga lahtri läbimiseks iga silmuse jaoks. See tuvastab funktsiooni InStr abil avaklambri märgi asukoha. Seejärel muudab see sulu ees oleva teksti fonti.

Selle koodi kasutamiseks peate kopeerima ja kleepima mooduli VB redaktoris.

Kui olete koodi kopeerimise kleepinud, valige lahtrid, milles soovite seda vormindada, ja käivitage makro (nagu allpool näidatud).

Samuti võivad teile meeldida järgmised Exceli VBA õpetused:

  • Funktsioon Excel VBA SPLIT.
  • Funktsioon VBA TRIM.
  • Exceli VBA silmuste lõplik juhend.
  • Algaja juhend järgmise silmuse kasutamiseks Excel VBA -s.
  • Exceli lisandmooduli loomine ja kasutamine
  • Kuidas ühendada mitu töövihikut üheks Exceli töövihikuks.
  • Kuidas arvutada Excelis värvilisi lahtreid.
  • Kasulikud Exceli VBA makronäited algajatele.
  • Andmete sortimine Excelis VBA abil (samm-sammuline juhend)

Te aitate arengu ala, jagades leht oma sõpradega

wave wave wave wave wave