Funkcia Excel VBA InStr - vysvetlená s príkladmi

Včera som dostal e -mail od jedného z mojich čitateľov - jún.

Chcela vedieť, ako použiť formát tučného písma na konkrétnu časť reťazca v bunke. Tučný formát napríklad použite iba na slovo „Hello“ z „Hello World“.

A chcela to urobiť pre stovky buniek naraz.

Pretože v programe Excel nie je vstavaná funkcia, ktorá by to dokázala, vytvoril som jednoduché makro, ktoré používa príponu Funkcia Excel VBA InStr (spôsob, ako to urobiť, uvidíte v Príklade 4 tohto tutoriálu).

Najprv sa však pozrime, ako funguje funkcia Excel VBA InStr!

Funkcia Excel VBA InStr

V tomto tutoriále vysvetlím používanie funkcie InStr v programe Excel VBA a ukážem niekoľko praktických príkladov, kde sa dá použiť.

Funkcia Excel VBA InStr - úvod

Funkcia InStr nájde polohu zadaného podreťazca v reťazci a vráti prvú pozíciu jeho výskytu.

Ak napríklad chcete nájsť pozíciu „x“ v programe „Excel“, pomocou funkcie Excel VBA InStr by ste vrátili 2.

Syntax funkcie InStr

InStr ([Štart], Reťazec1, Reťazec2, [Porovnať])
  • [Štart] - (voliteľný argument) toto je celočíselná hodnota, ktorá hovorí funkcii InStr počiatočnú pozíciu, od ktorej by mala začať hľadať. Napríklad, ak chcem, aby sa vyhľadávanie začalo od začiatku, zadám hodnotu ako 1. Ak chcem, aby začalo od tretieho znaku ďalej, použijem 3. Ak sa vynechá, použije sa predvolená hodnota 1.
  • Reťazec 1 - Toto je hlavný reťazec (alebo nadradený reťazec), v ktorom chcete hľadať. Ak napríklad hľadáte pozíciu x v programe Excel, reťazec 1 bude „Excel“.
  • Reťazec 2 - Toto je podreťazec, ktorý hľadáte. Ak napríklad hľadáte pozíciu x v programe Excel, String2 bude x.
  • [Porovnať] - (voliteľný argument) Pre argument [porovnať] môžete zadať jednu z nasledujúcich troch hodnôt:
    • vbBinaryCompare - To by robilo porovnanie charakter po znaku. Ak napríklad hľadáte „x“ v programe „Excel“, vráti 2, ale ak hľadáte „X“ v „Exceli“, vráti 0, pretože X je veľké písmená. Môžete tiež použiť 0 namiesto vbBinaryCompare. Ak je argument [Porovnať] vynechaný, považuje sa to za predvolené.
    • vbTextCompare - Toto by urobilo porovnanie textu. Ak napríklad v programe Excel hľadáte „x“ alebo „X“, v oboch prípadoch sa vráti 2. Tento argument ignoruje veľké a malé písmena. Môžete tiež použiť 1 namiesto vbTextCompare.
    • vbDatabaseCompare - Toto sa používa iba pre program Microsoft Access. Na porovnanie používa informácie v databáze. Môžete tiež použiť 2 namiesto vbDatabaseCompare.

Dodatočné poznámky k funkcii Excel VBA InStr:

  • InStr je funkcia VBA a nie funkcia pracovného hárka. To znamená, že ho nemôžete použiť v pracovnom hárku.
  • Ak je String2 (čo je podreťazec, ktorého pozíciu hľadáte) prázdny, funkcia vráti hodnotu argumentu [Start].
  • Ak funkcia InStr nemôže nájsť podreťazec v hlavnom reťazci, vráti 0.

Teraz sa pozrime na nejaký príklad použitia funkcie Excel VBA InStr

Príklad 1 - Nájdenie pozície od začiatku

V tomto prípade od začiatku použijem funkciu InStr na nájdenie polohy „V“ v „Excel VBA“.

Kód pre to bude:

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

Po spustení tohto kódu sa zobrazí okno so správou s hodnotou 7, čo je pozícia „V“ v reťazci „Excel VBA“.

Príklad 2 - Nájdenie pozície od začiatku druhého slova

Predpokladajme, že chcem nájsť pozíciu „toho“ vo vete - „Rýchla hnedá líška skáče cez lenivého psa“

Chcem však, aby sa hľadanie začalo druhým slovom.

V takom prípade musíme zmeniť argument [Štart], aby sme sa uistili, že určuje pozíciu, od ktorej začína druhé slovo.

Tu je kód, ktorý to urobí:

Sub FindFromSecondWord () Dim Position As Integer Position = InStr (4, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare) MsgBox Position End Sub

Tento kód zobrazí pole so správou s hodnotou 32, pretože východiskovú pozíciu sme zadali ako 4. Preto ignoruje prvé „The“ a vo vete nájde druhé „the“.

Ak ho chcete urobiť dynamickejším, môžete kód vylepšiť tak, aby automaticky ignoroval prvé slovo.

Tu je vylepšený kód, ktorý to urobí:

Sub FindFromSecondWord () Dim StartingPosition As Integer Dim Position As Integer StartingPosition = InStr (1, "The quick brown fox jump over the lazy dog", "", vbBinaryCompare) Position = InStr (StartingPosition, "The quick brown fox jumps the lazy pes "," the ", vbBinaryCompare) MsgBox Pozícia Koniec Sub

Tento kód najskôr zistí polohu znaku medzery a uloží ho do premennej StartingPosition.

Túto premennú potom použije ako počiatočnú pozíciu na vyhľadanie slova „the“.

Preto vráti 32 (čo je počiatočná pozícia „the“ za prvým slovom).

Príklad 3 - Zistenie polohy @ v e -mailovej adrese

Pomocou funkcie Excel VBA InStr môžete jednoducho vytvoriť vlastnú funkciu na nájdenie polohy @ v e -mailovej adrese.

Tu je kód na vytvorenie vlastnej funkcie:

Funkcia FindPosition (referenčný rozsah) ako celočíselná tmavá pozícia ako celočíselná poloha = InStr (1, odkaz, "@") FindPosition = koncová funkcia polohy

Teraz môžete túto vlastnú funkciu používať ako akúkoľvek inú funkciu pracovného hárka. Ako vstup vezme odkaz na bunku a poskytne vám pozíciu @ v ňom.

Podobne môžete vytvoriť vlastnú funkciu na nájdenie polohy akéhokoľvek podreťazca v hlavnom reťazci.

Príklad 4 - Zvýraznenie časti reťazca v bunkách

Tento dotaz si položil June (môj čitateľ, ktorý ma tiež inšpiroval k napísaniu tohto tutoriálu).

Tu je ukážka údajov vo formáte, ktorý mi poslal jún:

Jej požiadavkou bolo, aby boli čísla mimo zátvorky tučné.

Tu je kód, ktorý som vytvoril, ktorý to robí:

Podtučné () Dim rCell ako rozsah Dim Char ako celé číslo pre každý rCell pri výbere CharCount = Len (rCell) Char = InStr (1, rCell, "(") rCell.Character (1, Char - 1). Font.Bold = True Next rCell End Sub

Vyššie uvedený kód používa slučku For Each na prechod každou z buniek vo výbere. Identifikuje polohu znaku úvodnej zátvorky pomocou funkcie InStr. Potom zmení písmo textu pred zátvorkou.

Ak chcete použiť tento kód, musíte skopírovať a vložiť modul do editora VB.

Keď skopírujete kód, vyberte bunky, v ktorých chcete vykonať toto formátovanie, a spustite makro (ako je uvedené nižšie).

Tiež by sa vám mohli páčiť nasledujúce návody na Excel VBA:

  • Funkcia Excel VBA SPLIT.
  • Funkcia VBA TRIM.
  • Ultimate Guide to Excel VBA Loops.
  • Príručka pre začiatočníkov, ako použiť ďalšiu slučku v programe Excel VBA.
  • Ako vytvoriť a používať doplnok Excel.
  • Ako skombinovať viac zošitov do jedného zošita programu Excel.
  • Ako počítať farebné bunky v programe Excel.
  • Užitočné príklady makier Excelu VBA pre začiatočníkov.
  • Ako zoradiť údaje v programe Excel pomocou VBA (podrobný sprievodca)

Vám pomôže rozvoju miesta, zdieľať stránku s priateľmi

wave wave wave wave wave