Funkce Excel VBA InStr – vysvětleno s příklady

Včera jsem dostal e-mail od jednoho z mých čtenářů – červen.

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

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

Protože existuje žádná vestavěná funkce v aplikaci Excel, která to dokáže, vytvořil jsem jednoduché makro, které používá funkci Excel VBA InStr (uvidíte, jak to udělat v příkladu 4 v tomto tutoriálu).

Ale nejprve se podívejme jak funguje funkce Excel VBA InStr!

Tento výukový program zahrnuje:

Funkce Excel VBA InStr

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

Funkce Excel VBA InStr – úvod

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

Například pokud chcete najít pozici ‚x‘ v ‚Excel‘, pomocí funkce Excel VBA InStr vrátí 2.

Syntaxe funkce InStr

  • – (volitelný argument) toto je celočíselná hodnota, která sděluje funkci InStr výchozí pozici, ze které by měla začít hledat. Například pokud chci, aby hledání začalo od začátku, zadám hodnotu jako 1. Pokud chci, aby to začalo třetím znakem, použiji 3. Pokud je vynecháno, použije se výchozí hodnota 1.
  • String1 – 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 by byl „Excel“.
  • Řetězec2 – toto je podřetězec, který hledáte. Například pokud jste při pohledu na pozici x v aplikaci Excel bude String2 x.
  • – (volitelný argument) Můžete zadat jednu z následujících tří hodnot pro argument:
    • vbBinaryCompare – to by udělalo znak podle srovnání znaků. Například pokud hledáte „x“ v „Excelu“, vrátí 2, ale pokud hledáte „X“ v „Excelu“, vrátí 0, protože X je nahoře případ. Můžete také použít 0 místo vbBinaryCompare. Pokud je argument vynechán, je to považováno za výchozí.
    • vbTextCompare – Toto by provedlo textové srovnání. Například pokud hledáte „x“ nebo „X“ v aplikaci Excel, v obou případech vrátí hodnotu 2. Tento argument ignoruje velká a malá písmena. Místo vbTextCompare můžete také použít 1.
    • vbDatabaseCompare – používá se pouze pro Microsoft Access. používá informace v databázi provést srovnání. Místo vbDatabaseCompare můžete také použít 2.

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

  • InStr je VBA funkce 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 vrátí hodnotu argumentu.
  • Pokud funkce InStr nemůže najít podřetězec v hlavním řetězci, vrátí hodnotu 0.

Podívejme se nyní na několik příkladů použití funkce Excel VBA InStr

Příklad 1 – Vyhledání pozice od začátku

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

Kód pro toto bude:

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

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

Příklad 2 – Hledání pozice od začátku druhého slova

Předpokládám, že chci najít pozici „of“ ve větě – „Rychlá hnědá liška skáče přes líného psa“

Chci však, aby vyhledávání začněte od druhého slova.

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

Zde je kód, který to udělá:

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

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

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

Zde je vylepšený kód, který to udělá:

Sub FindFromSecondWord()Dim StartingPosition As IntegerDim Position As IntegerStartingPosition = InStr(1, "The quick brown fox jumps over the lazy dog", " ", vbBinaryCompare)Position = InStr(StartingPosition, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)MsgBox PositionEnd Sub

Tento kód nejprve najde pozici mezerového znaku a uloží jej do proměnné StartingPosition.

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

Proto vrací 32 (což je výchozí pozice znaku „za“ za prvním slovem).

Příklad 3 – Vyhledání 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. / p>

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

Tuto vlastní funkci nyní můžete použít jako jakoukoli jinou funkci listu. Jako vstup převezme odkaz na buňku a dá vám v něm pozici @.

Podobně můžete vytvořit vlastní funkce k vyhledání polohy libovolného podřetězce v hlavním řetězci.

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

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

Zde je ukázka dat ve formátu, který mi červen poslal:

Jejím dotazem bylo, aby čísla mimo závorku byla zvýrazněna tučně.

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

Výše uvedený kód používá smyčku For each k projít každou z buněk ve výběru. Identifikuje polohu znaku úvodní závorky pomocí funkce InStr. Poté změní písmo textu před závorkou.

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

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

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

  • Funkce Excel VBA SPLIT.
  • Funkce VBA TRIM.
  • 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 kombinovat 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 VBA pro Excel pro začátečníky.
  • Jak třídit data v aplikaci Excel pomocí VBA (Podrobný průvodce)

Leave a Reply

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *