„Excel VBA InStr“ funkcija - paaiškinta pavyzdžiais

Vakar iš vieno skaitytojo gavau el. Laišką - Birželis.

Ji norėjo žinoti, kaip taikyti paryškintą šrifto formatą konkrečiai langelio eilutės daliai. Pvz., Taikykite paryškintą formatą tik žodžiui „Labas“ iš „Labas pasaulis“.

Ir ji norėjo tai padaryti šimtams kamerų vienu metu.

Kadangi „Excel“ nėra integruotų funkcijų, galinčių tai padaryti, sukūriau paprastą makrokomandą, naudojančią „Excel VBA InStr“ funkcija (kaip tai padaryti, pamatysite šios pamokos 4 pavyzdyje).

Bet pirmiausia pažiūrėkime, kaip veikia „Excel VBA InStr“ funkcija!

„Excel VBA InStr“ funkcija

Šioje pamokoje paaiškinsiu „InStr“ funkcijos naudojimą „Excel VBA“ ir pamatysiu keletą praktinių pavyzdžių, kur ją galima naudoti.

„Excel VBA InStr“ funkcija - įvadas

Funkcija „InStr“ nustato nurodytos antrinės eilutės vietą eilutėje ir grąžina pirmąją jos atsiradimo vietą.

Pavyzdžiui, jei norite rasti „x“ poziciją „Excel“, naudojant „Excel VBA InStr“ funkciją būtų grąžinta 2.

Funkcijos „InStr“ sintaksė

„InStr“ ([Pradėti], Eilutė1, Eilutė2, [Palyginti])
  • [Pradėti] - (neprivalomas argumentas) tai sveikasis skaičius, nurodantis funkcijai „InStr“ pradinę padėtį, nuo kurios ji turėtų pradėti ieškoti. Pavyzdžiui, jei noriu, kad paieška prasidėtų nuo pradžių, įvesiu reikšmę kaip 1. Jei noriu, kad ji prasidėtų nuo trečio simbolio, naudoju 3. Jei praleista, imama numatytoji reikšmė 1.
  • Eilutė1 - Tai yra pagrindinė eilutė (arba pagrindinė eilutė), kurioje norite ieškoti. Pavyzdžiui, jei „Excel“ ieškote x padėties, 1 eilutė būtų „Excel“.
  • Eilutė2 - Tai yra antrinė eilutė, kurios ieškote. Pavyzdžiui, jei „Excel“ ieškote x padėties, eilutė2 būtų x.
  • [Palyginti] - (pasirenkamas argumentas) Argumentui [palyginti] galite nurodyti vieną iš šių trijų verčių:
    • vbBinaryCompare - Tai palygintų charakterį pagal charakterį. Pavyzdžiui, jei „Excel“ ieškote „x“, jis grąžins 2, bet jei ieškote „X“ „Excel“, jis grąžins 0, nes X yra didžiosios raidės. Vietoj „vbBinaryCompare“ taip pat galite naudoti 0. Jei argumentas [Palyginti] praleistas, tai laikoma numatytuoju.
    • vbTextCompare - Tai būtų tekstinis palyginimas. Pvz., Jei „Excel“ ieškosite „x“ arba „X“, abiem atvejais bus pateikta 2. Šis argumentas ignoruoja raidžių atvejį. Vietoj „vbTextCompare“ taip pat galite naudoti 1.
    • vbDatabaseCompare - Tai naudojama tik „Microsoft Access“. Palyginimui atlikti ji naudoja duomenų bazėje esančią informaciją. Vietoj „vbDatabaseCompare“ taip pat galite naudoti 2.

Papildomos pastabos apie „Excel VBA InStr“ funkciją:

  • „InStr“ yra VBA funkcija, o ne darbalapio funkcija. Tai reiškia, kad negalite jo naudoti darbalapyje.
  • Jei eilutė2 (tai antrinė eilutė, kurios pozicijos ieškote) yra tuščia, funkcija grąžins argumento [Pradėti] vertę.
  • Jei funkcija „InStr“ neranda pagrindinės eilutės antrinės eilutės, ji grąžins 0.

Dabar pažvelkime į „Excel VBA InStr“ funkcijos naudojimo pavyzdį

1 pavyzdys. Pozicijos paieška nuo pradžių

Šiame pavyzdyje aš naudosiu funkciją „InStr“, kad surastų „V“ padėtį „Excel VBA“ nuo pat pradžių.

Tam skirtas kodas būtų toks:

Sub FindFromBeginning () Dim Position as Integer Position = InStr (1, "Excel VBA", "V", vbBinaryCompare) "MsgBox" pozicijos pabaiga

Kai paleisite šį kodą, jis parodys pranešimų laukelį su reikšme 7, kuri yra „V“ padėtis eilutėje „Excel VBA“.

2 pavyzdys - pozicijos paieška nuo Antrojo žodžio pradžios

Tarkime, norėčiau rasti „the“ poziciją sakinyje - „Greita ruda lapė peršoka per tingų šunį“

Tačiau noriu, kad paieškos prasidėtų nuo antro žodžio.

Tokiu atveju turime pakeisti argumentą [Pradėti], kad įsitikintumėte, jog jis nurodo vietą, nuo kurios prasideda antrasis žodis.

Čia yra kodas, kuris tai padarys:

Sub FindFromSecondWord () Dim Position As Integer Position = InStr (4, „Greita ruda lapė šokinėja per tingų šunį“, „the“, vbBinaryCompare) „MsgBox“ pozicijos pabaiga

Šis kodas parodys pranešimų laukelį su reikšme 32, nes mes nurodėme pradinę padėtį kaip 4. Taigi jis ignoruoja pirmąjį „The“ ir randa antrąjį „the“ sakinyje.

Jei norite padaryti jį dinamiškesnį, galite patobulinti kodą, kad jis automatiškai ignoruotų pirmąjį žodį.

Štai patobulintas kodas, kuris tai padarys:

Sub FindFromSecondWord () Dim StartingPosition As Integer Dim Position As Integer StartingPosition = InStr (1, "Greita rudoji lapė šokinėja per tingų šunį", "", vbBinaryCompare) Pozicija = InStr (StartingPosition, "Greita ruda lapė šokinėja per tinginį" šuo “,„ the “, vbBinaryCompare)„ MsgBox “pozicijos pabaiga

Šis kodas pirmiausia suranda tarpo simbolio padėtį ir išsaugo jį kintamajame StartingPosition.

Tada jis naudoja šį kintamąjį kaip pradinę padėtį ieškodamas žodžio „the“.

Taigi jis grąžina 32 (tai yra pradinė „the“ pozicija po pirmojo žodžio).

3 pavyzdys - @ pozicijos radimas el. Pašto adrese

Naudodami „Excel VBA InStr“ funkciją, galite lengvai sukurti pasirinktinę funkciją, kad rastumėte @ poziciją el. Pašto adrese.

Čia yra kodas, skirtas sukurti pasirinktinę funkciją:

Funkcija FindPosition (Nuoroda kaip diapazonas) Kaip sveikasis skaičius Pozicija kaip sveikasis skaičius = InStr (1, nuoroda, "@") FindPosition = Pozicijos pabaigos funkcija

Dabar šią pasirinktinę funkciją galite naudoti kaip bet kurią kitą darbalapio funkciją. Jis įves langelio nuorodą kaip įvestį ir nurodys @ poziciją joje.

Panašiai galite sukurti pasirinktinę funkciją, kad surastumėte bet kurios antrinės eilutės vietą pagrindinėje eilutėje.

4 pavyzdys. Ląstelių eilutės dalies paryškinimas

Tai užklausa, kurią uždavė Birželis (mano skaitytojas, kuris mane taip pat įkvėpė parašyti šią pamoką).

Štai pavyzdžių duomenys, kuriuos pateikė birželio mėn.

Jos užklausa buvo paryškinti skliausteliuose esančius skaičius.

Štai mano sukurtas kodas, kuris tai daro:

Sub Bold () Dim rCell As Diapazonas Dim Char kaip sveikasis skaičius kiekvienam pasirinktam rCell CharCount = Len (rCell) Char = InStr (1, rCell, "(") rCell.Characters (1, Char - 1) .Font.Bold = „True Next rCell End Sub“

Aukščiau pateiktas kodas naudoja kiekvieną ciklą, kad pereitų per kiekvieną pasirinktą langelį. Naudojant „InStr“ funkciją, ji nustato atidarymo skliaustų simbolio padėtį. Tada jis pakeičia teksto šriftą prieš skliaustą.

Norėdami naudoti šį kodą, turite nukopijuoti ir įklijuoti modulį VB redaktoriuje.

Kai nukopijuosite kodą, pasirinkite langelius, kuriuose norite atlikti šį formatavimą, ir paleiskite makrokomandą (kaip parodyta žemiau).

Jums taip pat gali patikti šie „Excel VBA“ vadovėliai:

  • „Excel VBA SPLIT“ funkcija.
  • VBA TRIM funkcija.
  • Galutinis „Excel VBA“ kilpų vadovas.
  • Pradedančiųjų vadovas, kaip naudoti kitą ciklą „Excel VBA“.
  • Kaip sukurti ir naudoti „Excel“ priedą.
  • Kaip sujungti kelias darbaknyges į vieną „Excel“ darbaknygę.
  • Kaip skaičiuoti spalvotus langelius „Excel“.
  • Naudingi „Excel VBA“ makrokomandų pavyzdžiai pradedantiesiems.
  • Kaip rūšiuoti duomenis „Excel“ naudojant VBA (žingsnis po žingsnio vadovas)

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave