Jak používat funkci InStr ve VBA (3 jednoduché příklady)

  • Sdílet Toto
Hugh West

Při práci s kódy VBA aplikace Excel se setkáváme s několika vestavěnými funkcemi, které složitou úlohu převedou na malý jednořádkový kód. InStr je taková funkce dostupná v Excelu VBA, která hledá určitý řetězec v jiném daném řetězci od dané pozice. Dnes vám ukážu, jak můžete použít funkci InStr funkce ve VBA pro vyhledání určitého řetězce v jiném zadaném řetězci.

Stáhnout cvičebnici

Funkce InStr.xlsm

Úvod do Funkce VBA InStr

  • Souhrn

Vyhledá určitý řetězec v daném řetězci, počínaje danou pozicí. Pokud najde shodu, vrátí pozici v daném řetězci, odkud shoda začala.

  • Syntaxe

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

  • Argumenty
ARGUMENT POŽADAVEK POPIS

[start] Volitelně Pozice, od které se začne vyhledávat. Výchozí hodnota je 1.
string1 Požadované Řetězec, ve kterém hledá daný řetězec.
string2 Požadované Řetězec, který hledá v daném řetězci.
[porovnat] Volitelně Číselná hodnota mezi {-1,0,1,2}, která určuje typ porovnání. Výchozí hodnota je -1 (vbUseCompareOption). Pokud není příkaz Option Compare zadán, provede se binární porovnání.

Poznámka:

  • Ačkoli [start] a argument [porovnat] jsou nepovinné, potřebujete [start] pokud zadáte argument [porovnat] V opačném případě dojde k chybě.
  • Pokud jeden nebo oba [start] a argument [porovnat] argument je Null , dojde k chybě.
  • Čtyři zadané hodnoty v [porovnat] argument provádět čtyři různé typy porovnání. Jsou uvedeny níže:
VALUE CONSTANT POPIS

-1 vbUseCompareOption Provede porovnání zadané v příkazu Option Compare.
0 vbBinaryCompare Provede binární porovnání.
1 vbTextCompare Provede porovnání textu.
2 vbDatabaseCompare Provede porovnání na základě vaší databáze.
  • Porovnání možností je příkaz uvedený před spuštěním hlavního kódu VBA. Určuje, zda bude kód v případě potřeby hledat binární porovnání nebo textové porovnání.

Možnost Porovnat text

    • Zjednodušeně řečeno , Binární srovnání znamená porovnávání s rozlišováním velkých a malých písmen.
    • Zjednodušeně řečeno , Srovnání textů znamená porovnávání bez ohledu na velikost písmen.
  • Návratová hodnota
    • Vrací pozici v string1 z něhož string2 zahájeno.
    • V případě string2 se nenachází uvnitř string1 počínaje začít pozice, vrací 0.
    • Pokud string1 má nulovou délku, vrátí 0.
    • Pokud string2 má nulovou délku, vrátí argument začít .
    • A konečně, pokud některý z string1 nebo string2 je Null , vrátí chybu.

3 jednoduché příklady použití funkce VBA InStr

V této části si ukážeme tři jednoduché příklady použití VBA. InStr v Excelu. Podívejme se na první příklad funkce InStr funkce v kódech VBA.

1. Rozhodování o tom, zda je adresa e-mailová, nebo ne pomocí funkce VBA InStr

Zde jsme vzali soubor dat obsahující některé kontaktní adresy zákazníků. Naším cílem zde bude určit, zda se jedná o e-mailové adresy, či nikoli.

Nyní vytvoříme kód VBA pomocí příkazu InStr funkce, abyste zjistili, zda se jedná o e-mailovou adresu, nebo ne. Postupujte podle následujících kroků.

Kroky:

  • Na začátku přejděte na Vývojář a vyberte možnost Visual Basic ( Nebo stiskněte Alt+F11) otevřít VBA okno.

  • Poté na VBA přejděte do okna Vložit> Modul .

  • Poté do modulu vložte následující kód:
 Function DECISION(string1 As String) Dim Position As Integer Position = InStr(1, string1, "@", 0) If Position = 0 Then DECISION = "Not Email" Else DECISION = "Email" End If End Function 

  • Kromě toho jsme vytvořili funkci s názvem ROZHODNUTÍ . Rozhoduje o tom, zda je adresa e-mailovou adresou, nebo ne. Aplikujme funkci na soubor dat, který máme k dispozici.
  • Na buňce C5 , zapište následující vzorec a poté automaticky vyplňte zbytek buněk pomocí příkazu Plnicí rukojeť .
=DECISION(B5)

  • Jak vidíme, identifikovali jsme každou adresu bez ohledu na to, zda se jedná o e-mailovou adresu, nebo ne.

🎓 Jak kód funguje?

  • Funkce DECISION(string1 As String)

Nejprve se vytvoří funkce s názvem ROZHODNUTÍ s řetězcovým argumentem pojmenovaným string1 .

  • Dim Pozice jako celé číslo

Deklaruje celočíselnou proměnnou s názvem Pozice .

  • Position = InStr(1, string1, "@", 0)

Tím se přiřadí hodnota Pozice proměnnou jako výstup InStr s argumenty 1, string1, "@" a 0 . Stručně řečeno, přiřadí se pozice v adrese, kde se nachází "@" .

  • If Position = 0 Then DECISION = "Není e-mail"

Přiřadí výstup ROZHODNUTÍ funkci jako "Ne E-mail" , pokud Pozice proměnná je 0 , to znamená, že neexistoval žádný "@" v adrese.

(Připomeňme, že pokud v zadaném řetězci není nalezen žádný řetězec. InStr funkce vrací 0 ).

  • Jinak DECISION = "E-mail"

Tím se přiřadí výstup ROZHODNUTÍ funkci jako "E-mail" kdyby existoval "@" v adrese. Tedy adresy, kde se nachází "@" jsou kategorizovány jako E-mail a ostatní jsou zařazeny do kategorií "Ne E-mail" .

Podobná čtení

  • Jak používat funkci VBA UCASE v aplikaci Excel (4 příklady)
  • Použití funkce MsgBox v aplikaci Excel VBA (kompletní návod)
  • Jak používat funkci VBA SPLIT v aplikaci Excel (5 příkladů)
  • Použití funkce LCase ve VBA v aplikaci Excel (se 4 příklady)
  • Jak používat funkci Fix v aplikaci Excel VBA (4 příklady)

2. Využití funkce VBA InStr pro Extrakce přípony některých e-mailových adres

Zde máme seznam e-mailových adres některých zákazníků. Tentokrát budeme extrahovat příponu e-mailové adresy, například zda mají gmail.com nebo yahoo.com .

Postupujte podle následujících kroků.

Kroky:

  • Začněte stejně jako v předchozím případě otevřením nového účtu. VBA a do okna vložte následující kód.
 Function EXTENSION(Email As String) Dim Position As Integer Position = InStr(1, Email, "@", 0) EXTENSION = Right(Email, (Len(Email) - Position)) End Function 

  • Kromě toho jsme vytvořili funkci s názvem EXTENSION . Extrahuje příponu libovolné e-mailové adresy.
  • Dále použijme tuto funkci na soubor dat, který máme k dispozici. Nejprve zadejte tento vzorec do buňky C5 a poté dvakrát klikněte na Plnicí rukojeť .
=EXTENSION(B5)

  • Nakonec vidíme, že jsme úspěšně extrahovali přípony všech e-mailů.

🎓 Jak kód funguje?

  • Funkce EXTENSION(Email jako String)

Tím se vytvoří nová funkce s názvem EXTENSION , s řetězcovým argumentem pojmenovaným E-mail .

  • Dim Pozice jako celé číslo

Tato část deklaruje celočíselnou proměnnou s názvem Pozice.

  • Pozice = InStr(1, Email, "@", 0)

Tím se přiřadí hodnota Pozice proměnnou jako výstup InStr s argumenty 1, E-mail, "@" a 0 . Stručně řečeno, toto přiřazení pozice v E-mail kde je "@" .

  • EXTENSION = Right(Email, (Len(Email) - Position))

Tato část přiřazuje výstup EXTENSION jako znaky za symbolem "@" Jedná se o požadované rozšíření E-mail .

3. Vyjmutí jména nebo příjmení ze jména pomocí funkce VBA InStr

Nakonec provedeme jednoznačně odlišnou úlohu. Tentokrát máme k dispozici jména některých zaměstnanců firmy. A pokusíme se sestavit funkci, která z nich vyčlení buď křestní jméno, nebo příjmení.

Postupujte podle následujících kroků.

Kroky:

  • Za prvé, podobně jako metoda 1 , vložte níže uvedený kód do nového modulu v okně VBA.
 Function SHORTNAME(Name As String, First_or_Last As Integer) Dim Break As Integer Break = InStr(1, Name, " ", 0) If First_or_Last = -1 Then SHORTNAME = Left(Name, Break - 1) Else SHORTNAME = Right(Name, Len(Name) - Break) End If End Function 

  • Zde jsme vytvořili funkci s názvem KRÁTKÝ NÁZEV který ze jména extrahuje buď křestní jméno, nebo příjmení. Aplikujme tento vzorec na náš soubor dat.
  • Chcete-li nejprve získat křestní jméno, zapište do buňky následující vzorec C5 .
=ZKRÁCENÝ NÁZEV(B5,-1)

  • Nakonec, abychom získali příjmení, zapíšeme následující vzorec v položce D5 :
=ZKRÁCENÝ NÁZEV(B5,1)

  • Pokud poté automaticky vyplníme zbytek buněk pomocí položek Obsluha náplně , se dočkáme kýženého výsledku.

🎓 Jak kód funguje?

  • Funkce SHORTNAME(Name As String, First_or_Last As Integer)

Vytvoří novou funkci s názvem KRÁTKÝ NÁZEV s jedním argumentem String pojmenovaným Název a jeden celočíselný argument s názvem First_or_Last .

  • Dim Break As Integer

Tato část deklaruje novou celočíselnou proměnnou s názvem Přestávka .

  • Break = InStr(1, Name, " ", 0)

Přiřadí hodnotu Přestávka proměnnou jako výstup InStr s argumenty 1, jméno, " " a 0 . Stručně řečeno, toto přiřazení pozice v Název kde je mezera (" ").

  • If First_or_Last = -1 Then SHORTNAME = Left(Name, Break - 1)

Tento řádek přiřazuje výstup KRÁTKÝ NÁZEV jako znaky před prostor , pokud First_or_Last je -1. Jedná se o první jméno.

  • SHORTNAME = Right(Name, Len(Name) - Break)

Tato část přiřazuje výstup KRÁTKÝ NÁZEV jako znaky za prostor , pokud First_or_Last argument je 1. Jedná se o příjmení.

Závěr

Tímto způsobem můžete psát kódy VBA pomocí InStr funkce, která zjistí pozici určitého řetězce v jiném daném řetězci, a dále si můžete vytvářet vlastní funkce pro nejrůznější použití. Navíc, pokud máte nějaké dotazy, neváhejte se nás zeptat.

Hugh West je velmi zkušený školitel a analytik Excelu s více než 10 lety zkušeností v oboru. Má bakalářský titul v oboru Účetnictví a finance a magisterský titul v oboru Business Administration. Hugh má vášeň pro výuku a vyvinul jedinečný přístup k výuce, který lze snadno sledovat a pochopit. Jeho odborné znalosti Excelu pomohly tisícům studentů a profesionálů po celém světě zlepšit své dovednosti a vyniknout ve své kariéře. Prostřednictvím svého blogu Hugh sdílí své znalosti se světem a nabízí bezplatné výukové programy Excelu a online školení, které jednotlivcům a firmám pomohou dosáhnout jejich plného potenciálu.