Funkce Excel VBA InStr - vysvětleno na příkladech

Včera mi přišel e -mail od jednoho z mých čtenářů - červen.

Chtěla vědět, jak použít tučné písmo na konkrétní část řetězce v buňce. Tučný formát použijte například pouze na slovo „Hello“ z „Hello World“.

A chtěla to udělat pro stovky buněk najednou.

Protože v Excelu nejsou žádné vestavěné funkce, které by to dokázaly, vytvořil jsem jednoduché makro, které používá Funkce Excel VBA InStr (jak to udělat, uvidíte v příkladu 4 v tomto kurzu).

Nejprve se však podívejme, jak funguje funkce Excel VBA InStr!

Funkce Excel VBA InStr

V tomto tutoriálu vysvětlím použití funkce InStr v aplikaci Excel VBA a podívám se na několik praktických příkladů, kde ji lze použít.

Funkce Excel VBA InStr - úvod

Funkce InStr najde pozici zadaného podřetězce v řetězci a vrátí první pozici jeho výskytu.

Pokud například chcete najít polohu „x“ v „Excelu“, pomocí funkce Excel VBA InStr by se vrátilo 2.

Syntaxe funkce InStr

InStr ([Start], String1, String2, [Compare])
  • [Start] - (volitelný argument) toto je celočíselná hodnota, která říká funkci InStr počáteční pozici, od které by měla začít hledat. Pokud například chci, aby hledání začalo od začátku, zadám hodnotu jako 1. Pokud chci, aby začala třetím znakem dále, použiji 3. Pokud je vynechán, použije se výchozí hodnota 1.
  • Řetězec 1 - Toto je hlavní řetězec (nebo nadřazený řetězec), ve kterém chcete hledat. Pokud například hledáte pozici x v aplikaci Excel, řetězec 1 bude „Excel“.
  • Řetězec 2 - Toto je podřetězec, který hledáte. Pokud například hledáte pozici x v aplikaci Excel, String2 bude x.
  • [Porovnat] - (volitelný argument) Pro argument [porovnat] můžete zadat jednu z následujících tří hodnot:
    • vbBinaryCompare - To by provedlo srovnání jednotlivých znaků. Pokud například hledáte „x“ v „Excelu“, vrátí 2, ale pokud hledáte „X“ v „Excelu“, vrátí 0, protože X je velká písmena. Místo vbBinaryCompare můžete také použít 0. Pokud je argument [Porovnat] vynechán, je to bráno jako výchozí.
    • vbTextCompare - To by provedlo textové srovnání. Pokud například v Excelu hledáte „x“ nebo „X“, vrátí v obou případech 2. Tento argument ignoruje velká a malá písmena. Místo vbTextCompare můžete také použít 1.
    • vbDatabaseCompare - Toto se používá pouze pro Microsoft Access. K porovnávání používá informace v databázi. Místo vbDatabaseCompare můžete také použít 2.

Další poznámky k funkci Excel VBA InStr:

  • InStr je funkce VBA a ne funkce listu. To znamená, že jej nemůžete použít v listu.
  • Pokud je String2 (což je podřetězec, jehož pozici hledáte) prázdný, funkce by vrátila hodnotu argumentu [Start].
  • Pokud funkce InStr nemůže najít podřetězec v hlavním řetězci, vrátí 0.

Nyní se podívejme na nějaký příklad použití funkce Excel VBA InStr

Příklad 1 - Nalezení pozice od začátku

V tomto příkladu použiji od začátku funkci InStr k nalezení polohy „V“ v „Excel VBA“.

Kód pro toto by byl:

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

Když spustíte tento kód, zobrazí se okno se zprávou s hodnotou 7, což je pozice „V“ v řetězci „Excel VBA“.

Příklad 2 - Nalezení pozice od začátku druhého slova

Předpokládejme, že chci najít polohu „toho“ ve větě - „Rychlá hnědá liška přeskočí líného psa“

Chci však, aby hledání začalo druhým slovem.

V tomto případě musíme změnit argument [Start], abychom se ujistili, že určuje pozici, odkud začíná druhé slovo.

Zde je kód, který to provede:

Sub FindFromSecondWord () Dim Position As Integer Position = InStr (4, "Rychlá hnědá liška přeskočí líného psa", "the", vbBinaryCompare) MsgBox Pozice End Sub

Tento kód zobrazí pole se zprávou s hodnotou 32, protože jsme určili počáteční pozici jako 4. Proto ignoruje první „The“ a najde druhé „the“ ve větě.

Pokud chcete, aby byl dynamičtější, můžete kód vylepšit tak, aby automaticky ignoroval první slovo.

Zde je vylepšený kód, který to provede:

Sub FindFromSecondWord () Dim StartingPosition As Integer Dim Position As Integer StartingPosition = InStr (1, "The quick brown fox jumps over the lazy dog", "", vbBinaryCompare) Position = InStr (StartingPosition, "The quick brown fox jumps over the lazy pes "," the ", vbBinaryCompare) MsgBox Pozice Konec Sub

Tento kód nejprve zjistí polohu znaku mezery a uloží jej do proměnné StartingPosition.

Tuto proměnnou pak použije jako výchozí pozici k vyhledání slova „the“.

Vrátí tedy 32 (což je počáteční pozice „toho“ za prvním slovem).

Příklad 3 - Nalezení pozice @ v e -mailové adrese

Pomocí funkce Excel VBA InStr můžete snadno vytvořit vlastní funkci pro vyhledání pozice @ v e -mailové adrese.

Zde je kód pro vytvoření vlastní funkce:

Funkce FindPosition (rozsah jako odkaz) jako celočíselná poloha dimenze jako celočíselná poloha = InStr (1, odkaz, "@") FindPosition = pozice konec funkce

Nyní můžete tuto vlastní funkci použít jako jakoukoli jinou funkci listu. Jako vstup vezme odkaz na buňku a poskytne vám pozici @ v něm.

Podobně můžete vytvořit vlastní funkci, která najde pozici jakéhokoli podřetězce v hlavním řetězci.

Příklad 4 - Zvýraznění části řetězce v buňkách

Toto byl dotaz položený v červnu (můj čtenář, který mě také inspiroval k napsání tohoto tutoriálu).

Zde jsou ukázková data ve formátu, který mi poslal červen:

Jejím cílem bylo, aby čísla mimo závorku byla tučná.

Zde je kód, který jsem vytvořil, který to dělá:

Sub Bold () Dim rCell As Range Dim Char As Integer For each rCell In Selection CharCount = Len (rCell) Char = InStr (1, rCell, "(") rCell.Characters (1, Char - 1) .Font.Bold = True Next rCell End Sub

Výše uvedený kód používá smyčku For Every k procházení každou z buněk ve výběru. Identifikuje pozici znaku úvodní závorky pomocí funkce InStr. Potom změní písmo textu před závorkou.

Chcete -li tento kód použít, musíte zkopírovat a vložit modul do editoru VB.

Jakmile zkopírujete kód, vyberte buňky, ve kterých chcete toto formátování provést, a spusťte makro (jak je uvedeno níže).

Také by se vám mohly líbit následující výukové programy Excel VBA:

  • Funkce Excel VBA SPLIT.
  • Funkce VBA TRIM.
  • The Ultimate Guide to Excel VBA Loops.
  • Průvodce pro začátečníky k použití pro další smyčku v aplikaci Excel VBA.
  • Jak vytvořit a používat doplněk aplikace Excel.
  • Jak zkombinovat více sešitů do jednoho sešitu aplikace Excel.
  • Jak počítat barevné buňky v aplikaci Excel.
  • Užitečné příklady maker aplikace Excel VBA pro začátečníky.
  • Jak třídit data v aplikaci Excel pomocí VBA (průvodce krok za krokem)

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave