Ako nájsť reťazec pomocou VBA v programe Excel (8 príkladov)

  • Zdieľajte To
Hugh West

Implementácia VBA je najefektívnejšia, najrýchlejšia a najbezpečnejšia metóda na spustenie akejkoľvek operácie v Exceli. V tomto článku si ukážeme, ako nájsť určité reťazce v inom danom reťazci pomocou VBA v programe Excel.

Stiahnite si šablónu pre prax

Bezplatnú cvičnú šablónu Excel si môžete stiahnuť odtiaľto.

VBA na vyhľadávanie v reťazci String.xlsm

Funkcia InStr

Microsoft Excel má zabudovanú funkciu s názvom funkcia InStr na zistenie pozície konkrétnych reťazcov v danom reťazci.

Všeobecná syntax:

InStr([start], string1, string2, [compare])

Tu,

Argumenty Povinné/ voliteľné Definícia
spustenie Voliteľné Počiatočná pozícia vyhľadávania.
  • V predvolenom nastavení InStr Funkcia počíta pozíciu znaku počítaním od 1, nie od počiatočnej pozície. Ak chcete, môžete túto položku nechať prázdnu.
reťazec1 Požadované Reťazec, v ktorom sa má vyhľadávať, Primárny reťazec.
reťazec2 Požadované Reťazec, ktorý sa má hľadať v primárnom reťazci.
porovnať Voliteľné Stránka InStr je predvolene citlivá na veľkosť písmen. Ak však chcete spustiť funkciu, ktorá nerozlišuje veľkosť písmen InStr , potom tu môžete odovzdať argument na vykonanie určitého porovnania. Tento argument môže mať nasledujúce hodnoty,
  • vbBinaryCompare -> vykoná binárne porovnanie, návratová hodnota 0
  • vbTextCompare -> vykoná porovnanie textu, návratová hodnota 1
  • vbDatabaseCompare -> vykoná porovnanie databázy, návratová hodnota 2

V predvolenom nastavení, InStr berie vbBinaryCompare ako argument porovnania.

8 jednoduchých príkladov na nájdenie konkrétnej pozície reťazca v danom reťazci pomocou VBA

Ukážme si niekoľko jednoduchých príkladov na získanie pozícií určitých reťazcov v danom reťazci pomocou VBA .

1. VBA na zistenie pozície textu v reťazci

Nižšie je uvedený príklad InStr na zistenie pozície textu v reťazci.

  • Tlač Alt + F11 na klávesnici alebo prejdite na kartu Vývojár -> Visual Basic otvoriť Editor jazyka Visual Basic .

  • Vo vyskakovacom okne kódu kliknite na paneli ponúk na položku Vložiť -> Modul .

  • Teraz v okne kódu napíšte jednoduchý InStr program vo vnútri Podprocedúra VBA (pozri nižšie).
 Sub INSTR_Example() MsgBox InStr("Šťastie je voľba", "voľba") End Sub 

Váš kód je teraz pripravený na spustenie.

  • Tlač F5 na klávesnici alebo na paneli ponúk vyberte Run -> Run Sub/UserForm Môžete tiež jednoducho kliknúť na malá ikona Play na paneli podponúk, aby ste makro spustili.

Uvidíte, že vyskakovacie okno s hlásením vám poskytne číslo deklarujúce polohu textu, ktorý ste chceli skontrolovať.

Vysvetlenie:

Náš primárny reťazec " Šťastie je voľba " je veta s 21 písmenami (s medzerami) a my sme chceli nájsť pozíciu textu " výber " v tomto reťazci. Text " výber " začal od 16. pozície primárneho reťazca, preto sme dostali číslo 16 ako náš výstup v okne správy.

2. VBA na vyhľadávanie textu z konkrétnej pozície v reťazci

Teraz zistíme, čo by sa stalo, keby sme chceli získať pozíciu z určitého čísla.

  • Rovnaký spôsob ako predtým, otvoriť Editor jazyka Visual Basic z Vývojár karta a Vložte a Modul v okne kódu.
  • V okne kódu napíšte jednoduchý InStr a v argumente start odovzdajte hodnotu podľa pozície, od ktorej chcete text počítať.
 Sub INSTR_Example() MsgBox InStr(17, "Šťastie je voľba", "voľba") End Sub 

  • Ďalšie, Spustiť kód.

Uvidíte, že vyskakovacie okno s hlásením vám poskytne číslo deklarujúce polohu textu začínajúc z určitej pozície ktoré ste chceli skontrolovať.

Vysvetlenie:

Ako sme už vedeli (z diskusie v prvej fáze), text " výber " začal z pozície 16 , takže sme vložili dve " výber " v primárnom reťazci a nastavte 17 ako náš 1. parameter, aby sme preskočili prvý " výber ". Takže sme Spustiť vyššie uvedené makro a ukázalo nám to číslo pozície 27 čo je presne číslo pozície druhý " výber " v danom reťazci.

3. VBA na vyhľadávanie textu pomocou funkcie InStr v reťazci s rozlišovaním veľkých a malých písmen

Od zavedenia InStr už viete, že v predvolenom nastavení InStr Funkcia rozlišuje veľké a malé písmená. Zistíme to na príklade.

Pozrite si tieto informácie VBA kód, kde sme chceli nájsť pozíciu slova " Výber " s veľké "C" v reťazci " Šťastie je voľba ", kde je voľba napísaná s malé "c" .

  • Spustiť kód a nájdite 0 ako náš výstup.

Je to preto, že InStr funkcia ošetruje veľké "C" a malé "c" inak. Vyhľadal teda slovo " Výber " v reťazci a nezískal žiadnu zhodu, preto vrátil 0 .

  • Aby sa InStr funkcia rozlišovanie veľkých a malých písmen , nastavte argument compare na vbTextCompare (pozri nižšie).
 Sub INSTR_Example() MsgBox InStr(1, "Happiness is a choice and choice", "Choice", vbTextCompare) End Sub 

  • Spustiť kód.

Získate pozícia textu z reťazca, či je text napísaný v veľké alebo malé písmená .

4. VBA na vyhľadávanie textu z pravej strany reťazca

Až doteraz InStr Funkcia nám poskytovala iba pozíciu z ľavej strany reťazca. Ale čo ak chcete zistiť pozíciu textu z pravej strany reťazca.

Funkcia InStrRev vyhľadáva sprava. InStrRev funguje veľmi podobne ako funkcia InStr a nájde vám pozíciu textu z pravá strana reťazca.

Pozrite si nasledujúce príklady, aby ste pochopili rozdiel.

  • Ak spustíme nasledujúci kód s InStr funkcia potom,

nám poskytuje polohu ( 16 ) prvého textu " výber ".

  • Ak však spustíme ten istý kód s InStrRev Funkcia potom,

nám poskytuje polohu ( 27 ) posledného textu " výber ".

Podobné čítanie:

  • FindNext pomocou VBA v programe Excel (2 príklady)
  • Ako nájsť a nahradiť pomocou VBA (11 spôsobov)
  • Vyhľadanie presnej zhody pomocou VBA v programe Excel (5 spôsobov)

5. VBA na zistenie pozície znaku v reťazci

Rovnakým spôsobom, ako ste našli text, môžete nájsť aj pozíciu určitého znaku v reťazci.

  • Skopírujte nasledujúci kód do VBA kódové okno
 Sub Find_Character() Dim z As Long z = InStr("Šťastie je voľba", "e") MsgBox z End Sub 

  • A Spustiť makro.

Prvý " e " v našom reťazci je na čísle 7 pozícia.

6. VBA na vyhľadávanie podreťazca v reťazci

Tu sa naučíme, ako zistiť, či reťazec obsahuje podreťazec alebo nie.

Aby sme to získali, musíme spustiť Príkaz IF v našom kóde.

  • Rovnaký spôsob ako predtým, otvoriť Editor jazyka Visual Basic z Vývojár karta a Vložte a Modul v okne kódu.
  • V okne kódu skopírujte nasledujúci kód a vložte ho.
 Public Sub FindSub() If InStr("Šťastie je voľba", "voľba") = 0 Then MsgBox "Nenašla sa žiadna zhoda" Else MsgBox "Našla sa zhoda" End If End Sub 

Váš kód je teraz pripravený na spustenie.

  • Spustiť makro.

Ak váš reťazec obsahuje podreťazec potom dostanete nájdená zhoda v opačnom prípade nevráti žiadnu nájdenú zhodu. V našom príklade sme chceli zistiť, či náš primárny reťazec " Šťastie je voľba " obsahuje slovo " výber " alebo nie. Keď sa tak stane, dostaneme Nájdená zhoda výsledok.

7. VBA na vyhľadanie reťazca v rozsahu buniek

Môžete vyhľadať určitý text v rozsahu buniek reťazca a vrátiť určitý reťazec.

Pozrite sa na nasledujúci príklad, kde nájdeme " Dr. " a keď sa nájde zhoda, vráti sa " Doktor ".

  • Nižšie je uvedený kód na získanie vyššie uvedeného výsledku,
 Sub Find_String_in_Range() Dim cell As Range For Each cell In Range("B5:B10") If InStr(cell.Value, "Dr.")> 0 Then cell.Offset(0, 1).Value = "Doctor" End If Next cell End Sub 

  • Spustiť kód a výsledok je uvedený nižšie

  • Makro môžete upraviť podľa svojich potrieb. Napríklad, ak chcete nájsť " Prof. " v ľubovoľnej bunke reťazca a získajte " Profesor " ako návrat, potom jednoducho odovzdajte " Prof. " ako hodnotu namiesto " Dr. ." v 4. riadku makra a " Profesor " namiesto " Doktor " v 5. riadku makra a podľa toho definujte číslo rozsahu buniek.

8. VBA na vyhľadávanie reťazca v bunke

Môžete tiež vyhľadanie určitého textu v jednej bunke reťazca a vrátiť určitý reťazec.

  • Skopírujte nasledujúci kód a vložte ho do okna kódu.
 Sub Find_String_in_Cell() If InStr(Range("B5").Value, "Dr.")> 0 Then Range("C5").Value = "Doctor" End If End Sub 

Vyhľadá " Dr. " v Bunka B5 a ak nájde zhodu, vráti " Doktor " v Bunka C5 .

  • Makro môžete upraviť podľa svojich potrieb. Napríklad, ak chcete nájsť " Prof. " v ľubovoľnej bunke reťazca a získajte " Profesor " ako návrat, potom jednoducho odovzdajte " Prof. " ako hodnotu namiesto " Dr. ." v 2. riadku makra a " Profesor " namiesto " Doktor " v 3. riadku makra a podľa toho definujte referenčné číslo bunky.

Záver

Tento článok vám ukázal, ako nájsť určité texty v reťazci v programe Excel pomocou Makro VBA. Dúfam, že tento článok bol pre vás veľmi prínosný. Neváhajte a položte akékoľvek otázky týkajúce sa tejto témy.

Hugh West je veľmi skúsený tréner a analytik Excelu s viac ako 10-ročnými skúsenosťami v tomto odvetví. Má bakalársky titul v odbore účtovníctvo a financie a magisterský titul v odbore Business Administration. Hugh má vášeň pre vyučovanie a vyvinul jedinečný vyučovací prístup, ktorý sa dá ľahko sledovať a pochopiť. Jeho odborné znalosti Excelu pomohli tisíckam študentov a profesionálov na celom svete zlepšiť svoje zručnosti a vyniknúť vo svojej kariére. Hugh sa prostredníctvom svojho blogu delí o svoje znalosti so svetom a ponúka bezplatné výukové programy Excelu a online školenia, ktoré jednotlivcom a firmám pomôžu naplno využiť ich potenciál.