Excel VBA InStr funkcija - objašnjeno s primjerima

Jučer sam dobio poruku od jednog od svojih čitatelja - June.

Htjela je znati primijeniti podebljani format fonta na određeni dio niza unutar ćelije. Na primjer, primijenite podebljani format samo na riječ "Hello" iz "Hello World".

Htjela je to učiniti za stotine ćelija odjednom.

Budući da u Excelu nema ugrađene funkcije koja to može učiniti, stvorio sam jednostavnu makronaredbu koja koristi Excel VBA InStr funkcija (vidjet ćete kako to učiniti u primjeru 4 u ovom vodiču).

No, prvo da vidimo kako funkcionira Excel VBA InStr funkcija!

Excel VBA InStr funkcija

U ovom ću vodiču objasniti upotrebu funkcije InStr u Excelu VBA i vidjeti neke praktične primjere gdje se može koristiti.

Excel VBA InStr funkcija - Uvod

Funkcija InStr pronalazi položaj navedenog podniza u nizu i vraća prvu poziciju njegovog pojavljivanja.

Na primjer, ako želite pronaći položaj "x" u "Excelu", upotreba Excel VBA InStr funkcije vratila bi 2.

Sintaksa funkcije InStr

InStr ([Start], String1, String2, [Usporedi])
  • [Početak] - (izborni argument) ovo je cijela vrijednost koja govori funkciji InStr početnu poziciju s koje bi trebala početi tražiti. Na primjer, ako želim da pretraživanje započne od početka, unijet ću vrijednost kao 1. Ako želim da započne s trećim znakom nadalje, upotrijebit ću 3. Ako se izostavi, uzima se zadana vrijednost 1.
  • Niz1 - Ovo je glavni niz (ili roditeljski niz) u kojem želite pretraživati. Na primjer, ako tražite položaj x u Excelu, niz 1 bi bio "Excel".
  • Niz 2 - Ovo je podniz koji tražite. Na primjer, ako tražite položaj x u Excelu, String2 bi bio x.
  • [Usporedi] - (izborni argument) Možete navesti jednu od sljedeće tri vrijednosti za argument [usporedi]:
    • vbBinaryCompare - Time bi se napravila usporedba likova. Na primjer, ako tražite "x" u "Excelu", vratit će se 2, ali ako tražite "X" u "Excelu", vratit će se 0 jer je X u velikim slovima. Također možete koristiti 0 umjesto vbBinaryCompare. Ako je argument [Usporedi] izostavljen, to će se uzeti kao zadano.
    • vbTextCompare - Time bi se napravila tekstualna usporedba. Na primjer, ako tražite "x" ili "X" u Excelu, vratilo bi se 2 u oba slučaja. Ovaj argument zanemaruje velika slova. Također možete koristiti 1 umjesto vbTextCompare.
    • vbDatabaseCompare - Ovo se koristi samo za Microsoft Access. Za usporedbu koristi podatke u bazi podataka. Također možete koristiti 2 umjesto vbDatabaseCompare.

Dodatne napomene o Excel VBA InStr funkciji:

  • InStr je VBA funkcija, a ne funkcija radnog lista. To znači da ga ne možete koristiti unutar radnog lista.
  • Ako je String2 (koji je podniz čiji položaj tražite) prazan, funkcija bi vratila vrijednost argumenta [Start].
  • Ako funkcija InStr ne može pronaći podniz u glavnom nizu, vratit će 0.

Pogledajmo sada neki primjer korištenja Excel VBA InStr funkcije

Primjer 1 - Pronalaženje položaja od početka

U ovom primjeru koristit ću funkciju InStr za pronalaženje položaja 'V' u 'Excel VBA' od početka.

Kod za ovo bi bio:

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

Kada pokrenete ovaj kôd, prikazat će se okvir s vrijednošću 7, što je položaj "V" u nizu "Excel VBA".

Primjer 2 - Pronalaženje položaja s početka druge riječi

Pretpostavimo da želim pronaći položaj 'the' u rečenici - 'Brza smeđa lisica preskače lijenog psa'

Međutim, želim da pretraživanje započne drugom riječi nadalje.

U ovom slučaju moramo promijeniti argument [Start] kako bismo bili sigurni da određuje poziciju odakle počinje druga riječ.

Evo koda koji će to učiniti:

Sub FindFromSecondWord () Dim Position As Integer Position = InStr (4, "Brza smeđa lisica preskače lijenog psa", "the", vbBinaryCompare) MsgBox Position End Sub

Ovaj će kôd prikazati okvir za poruku s vrijednošću 32 jer smo odredili početnu poziciju 4. Stoga zanemaruje prvi 'The' i pronalazi drugi 'the' u rečenici.

Ako ga želite učiniti dinamičnijim, možete poboljšati kôd tako da automatski zanemaruje prvu riječ.

Evo poboljšanog koda koji će to učiniti:

Sub FindFromSecondWord () Dim StartingPosition As Integer Dim Position As Integer StartingPosition = InStr (1, "Brza smeđa lisica preskače lijenog psa", "", vbBinaryCompare) Position = InStr (StartingPosition, "Brza smeđa lisica preskače lijenu dog "," the ", vbBinaryCompare) MsgBox Pozicija Kraj Sub

Ovaj kôd prvo pronalazi poziciju razmaka i sprema ga u varijablu StartingPosition.

Zatim koristi ovu varijablu kao početnu poziciju za traženje riječi 'the'.

Stoga vraća 32 (što je početna pozicija 'the' nakon prve riječi).

Primjer 3 - Pronalaženje položaja @ na adresi e -pošte

Možete jednostavno stvoriti prilagođenu funkciju za pronalaženje položaja @ na adresi e -pošte pomoću funkcije Excel VBA InStr.

Evo koda za stvaranje prilagođene funkcije:

Funkcija FindPosition (Ref As Range) As Integer Dim Position As Integer Position = InStr (1, Ref, "@") FindPosition = Funkcija kraja položaja

Sada možete koristiti ovu prilagođenu funkciju kao i bilo koju drugu funkciju radnog lista. Kao ulaz će uzeti referencu ćelije i dati vam položaj @ u njoj.

Slično, možete stvoriti prilagođenu funkciju za pronalaženje položaja bilo kojeg podniza unutar glavnog niza.

Primjer 4 - Isticanje dijela niza unutar ćelija

Ovo je upit koji je postavio June (moj čitatelj koji me također inspirirao za pisanje ovog vodiča).

Evo primjera podataka u formatu koji mi je poslao lipanj:

Njezin je upit bio podebljati brojeve izvan zagrade.

Evo koda koji sam stvorio za ovo:

Sub Bold () Dim rCell As Range Dim Char As Integer Za svaku rCell u odabiru CharCount = Len (rCell) Char = InStr (1, rCell, "(") rCell.Crakovi (1, Char - 1). Font.Bold = True Next rCell End Sub

Gornji kôd koristi petlju Za svaki za prolazak kroz svaku ćeliju u odabiru. Ona identificira položaj znaka početne zagrade pomoću funkcije InStr. Zatim mijenja font teksta ispred zagrade.

Da biste koristili ovaj kôd, morate kopirati i zalijepiti u modul u VB uređivaču.

Nakon što ste kopirali zalijepljeni kôd, odaberite ćelije u kojima želite izvršiti ovo oblikovanje i pokrenite makro (kao što je prikazano u nastavku).

Možda će vam se svidjeti i sljedeći vodiči za Excel VBA:

  • Excel VBA SPLIT funkcija.
  • VBA TRIM funkcija.
  • Ultimativni vodič za Excel VBA petlje.
  • Vodič za početnike o korištenju For Next Loop u Excelu VBA.
  • Kako stvoriti i koristiti dodatak Excel.
  • Kako kombinirati više radnih knjiga u jednu Excel radnu knjigu.
  • Kako brojati obojene ćelije u Excelu
  • Korisni primjeri makroa Excel VBA za početnike.
  • Kako sortirati podatke u Excelu pomoću VBA (Korak po korak vodič)

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave