Excel VBA InStr funkcija - pojasnjeno s primeri

Včeraj sem od enega od bralcev prejel e -pošto - junij.

Želela je vedeti, kako uporabiti krepko obliko pisave za določen del niza v celici. Krepko obliko na primer uporabite samo za besedo "Hello" iz "Hello World".

In to je hotela narediti za stotine celic hkrati.

Ker v Excelu ni vgrajene funkcije, ki bi to zmogla, sem ustvaril preprost makro, ki uporablja datoteko Excel VBA InStr funkcija (kako to storite, boste videli v primeru 4 v tej vadnici).

Najprej pa poglejmo, kako deluje funkcija Excel VBA InStr!

Excel VBA InStr funkcija

V tej vadnici bom razložil uporabo funkcije InStr v Excelu VBA in si ogledal nekaj praktičnih primerov, kjer jo je mogoče uporabiti.

Excel VBA InStr funkcija - Uvod

Funkcija InStr poišče položaj podanega niza v nizu in vrne prvo mesto njegovega pojavljanja.

Na primer, če želite poiskati položaj »x« v »Excelu«, bi funkcija Excel VBA InStr vrnila 2.

Sintaksa funkcije InStr

InStr ([Start], String1, String2, [Primerjaj])
  • [Začni] - (izbirni argument) je to celoštevilska vrednost, ki funkciji InStr pove začetni položaj, s katerega naj začne iskati. Na primer, če želim, da se iskanje začne od začetka, bom vrednost vnesel kot 1. Če želim, da se začne s tretjim znakom naprej, bom uporabil 3. Če izpustimo, se vzame privzeta vrednost 1.
  • Niz1 - To je glavni niz (ali nadrejeni niz), v katerem želite iskati. Na primer, če iščete položaj x v Excelu, bi bil niz 1 »Excel«.
  • Niz 2 - To je podniz, ki ga iščete. Na primer, če iščete položaj x v Excelu, bi bil niz 2.
  • [Primerjaj] - (izbirni argument) Za argument [primerjaj] lahko določite eno od naslednjih treh vrednosti:
    • vbBinaryCompare - Tako bi naredili primerjavo med znaki. Na primer, če iščete »x« v »Excelu«, bo vrnil 2, če pa iščete »X« v »Excelu«, bo vrnil 0, saj je X v velikih črkah. Namesto vbBinaryCompare lahko uporabite tudi 0. Če je argument [Primerjaj] izpuščen, je to privzeto.
    • vbTextCompare - To bi naredilo besedilno primerjavo. Če na primer v Excelu poiščete »x« ali »X«, bi v obeh primerih vrnilo 2. Ta argument ne upošteva velikih črk. Namesto vbTextCompare lahko uporabite tudi 1.
    • vbDatabaseCompare - To se uporablja samo za Microsoft Access. Za primerjavo uporablja podatke v zbirki podatkov. Namesto vbDatabaseCompare lahko uporabite tudi 2.

Dodatne opombe o funkciji InStr Excel VBA:

  • InStr je funkcija VBA in ne funkcija delovnega lista. To pomeni, da ga ne morete uporabljati na delovnem listu.
  • Če je String2 (to je podniz, katerega položaj iščete) prazen, bi funkcija vrnila vrednost argumenta [Start].
  • Če funkcija InStr ne najde podniz v glavnem nizu, bi vrnila 0.

Zdaj pa poglejmo nekaj primerov uporabe funkcije Excel VBA InStr

Primer 1 - Iskanje položaja od začetka

V tem primeru bom s funkcijo InStr od začetka poiskal položaj 'V' v 'Excel VBA'.

Koda za to bi bila:

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

Ko zaženete to kodo, bo prikazano polje s sporočilom z vrednostjo 7, ki je položaj "V" v nizu "Excel VBA".

Primer 2 - Iskanje položaja od začetka druge besede

Recimo, da želim najti položaj 'the' v stavku - 'Hitra rjava lisica skoči čez lenobnega psa'

Želim pa, da se iskanje začne z drugo besedo naprej.

V tem primeru moramo spremeniti argument [Start], da zagotovimo, da določa položaj, od koder se začne druga beseda.

Tukaj je koda, ki bo to naredila:

Sub FindFromSecondWord () Dim Position As Integer Position = InStr (4, "Hitra rjava lisica skoči čez lenega psa", "the", vbBinaryCompare) MsgBox Position End Sub

Ta koda bo prikazala polje s sporočilom z vrednostjo 32, saj smo začetni položaj določili kot 4. Zato prezre prvo "The" in najde drugo "the" v stavku.

Če želite narediti dinamičnejšo, lahko kodo izboljšate tako, da samodejno prezre prvo besedo.

Tu je izboljšana koda, ki bo to naredila:

Sub FindFromSecondWord () Dim StartingPosition As Integer Dim Position As Integer StartingPosition = InStr (1, "Hitra rjava lisica skoči čez lenega psa", "", vbBinaryCompare) Position = InStr (StartingPosition, "Hitra rjava lisica skoči čez leno dog "," the ", vbBinaryCompare) MsgBox Position End Sub

Ta koda najprej poišče položaj presledka in ga shrani v spremenljivko StartingPosition.

Nato to spremenljivko uporabi kot izhodiščni položaj za iskanje besede 'the'.

Zato vrne 32 (kar je začetni položaj 'the' za prvo besedo).

Primer 3 - Iskanje položaja @ na e -poštnem naslovu

S funkcijo Excel VBA InStr lahko preprosto ustvarite funkcijo po meri za iskanje položaja @ na e -poštnem naslovu.

Tu je koda za ustvarjanje funkcije po meri:

Funkcija FindPosition (Ref As Range) As Integer Dim Position As Integer Position = InStr (1, Ref, "@") FindPosition = Position End Funkcija

Zdaj lahko to funkcijo po meri uporabite kot katero koli drugo funkcijo delovnega lista. Za vnos bo vzel referenco celice in vam dal položaj @ v njej.

Podobno lahko ustvarite funkcijo po meri za iskanje položaja katerega koli podniz v glavnem nizu.

Primer 4 - Označevanje dela niza v celicah

To je vprašanje, ki ga je vprašal June (moj bralec, ki me je tudi navdihnil za pisanje te vadnice).

Tu so vzorčni podatki v obliki, ki mi jo je poslal junij:

Njena poizvedba je bila, da bi številke zunaj oklepaja krepko označile.

Tukaj je koda, ki sem jo ustvaril, da to naredi:

Sub Bold () Dim rCell As Range Dim Char As Integer Za vsako rCell v izbiri CharCount = Len (rCell) Char = InStr (1, rCell, "(") rCell.Craves (1, Char - 1). Font.Bold = True Next rCell End Sub

Zgornja koda uporablja zanko Za vsako, da gre skozi vsako celico v izboru. S funkcijo InStr določa položaj začetnega znaka oklepaja. Nato spremeni pisavo besedila pred oklepajem.

Če želite uporabiti to kodo, morate kopirati in prilepiti modul v urejevalniku VB.

Ko kopirate prilepljeno kodo, izberite celice, v katerih želite izvesti to oblikovanje, in zaženite makro (kot je prikazano spodaj).

Morda vam bodo všeč tudi naslednji vadnici Excel VBA:

  • Excel VBA SPLIT funkcija.
  • Funkcija VBA TRIM.
  • Ultimate Guide to Excel VBA Loops.
  • Vodnik za začetnike o uporabi za naslednjo zanko v Excelu VBA.
  • Kako ustvariti in uporabiti dodatek Excel
  • Kako združiti več delovnih zvezkov v en Excelov delovni zvezek.
  • Kako šteti barvne celice v Excelu
  • Uporabni primeri makrov Excel VBA za začetnike.
  • Kako razvrstiti podatke v Excelu z uporabo VBA (Vodnik po korakih)
wave wave wave wave wave