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)