Obsah
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.