Obsah
Pri práci s kódmi Excel VBA sa stretávame s niekoľkými zabudovanými funkciami, ktoré premenia zložitú úlohu na malý jednoriadkový kód. InStr je taká funkcia dostupná v Exceli VBA, ktorá vyhľadá konkrétny reťazec v inom danom reťazci počnúc danou pozíciou. Dnes vám ukážem, ako môžete použiť funkciu InStr funkcia vo VBA na hľadanie konkrétneho reťazca v rámci iného zadaného reťazca.
Stiahnite si cvičebnicu
Funkcia InStr.xlsm
Úvod do Funkcia VBA InStr
- Zhrnutie
Vyhľadá konkrétny reťazec v danom reťazci, počnúc danou pozíciou. Ak nájde zhodu, vráti pozíciu v danom reťazci, od ktorej sa zhoda začala.
- Syntax
InStr([start],string1,string2,[compare])
- Argumenty
ARGUMENT | POŽIADAVKA | POPIS |
---|---|---|
[start] | Voliteľné | Pozícia, od ktorej sa začne vyhľadávanie. Predvolená hodnota je 1. |
reťazec1 | Požadované | Reťazec, v ktorom sa hľadá daný reťazec. |
reťazec2 | Požadované | Reťazec, ktorý sa hľadá v danom reťazci. |
[porovnať] | Voliteľné | Číselná hodnota medzi {-1,0,1,2}, ktorá určuje typ porovnania. Predvolená hodnota je -1 (vbUseCompareOption). Ak nie je zadaný príkaz Option Compare, vykoná sa binárne porovnanie. |
Poznámka:
- Hoci [start] argument a [porovnať] sú nepovinné, potrebujete [start] argument, ak zadáte [porovnať] V opačnom prípade sa zobrazí chyba.
- Ak jedna alebo obe [start] argument a [porovnať] argument je Null , zobrazí sa chyba.
- Štyri zadané hodnoty v [porovnať] argument vykonať štyri rôzne typy porovnávania. Sú uvedené nižšie:
HODNOTA | KONŠTANTNÉ | POPIS |
---|---|---|
-1 | vbUseCompareOption | Vykoná porovnanie zadané v príkaze Option Compare. |
0 | vbBinaryCompare | Vykoná binárne porovnanie. |
1 | vbTextCompare | Vykoná porovnanie textu. |
2 | vbDatabaseCompare | Vykoná porovnanie na základe vašej databázy. |
- Porovnanie možností je príkaz uvedený pred spustením hlavného kódu VBA. Určuje, či bude kód v prípade potreby vyhľadávať binárne porovnanie alebo textové porovnanie.
Možnosť Porovnať text
- Zjednodušene povedané , Binárne porovnanie znamená porovnávanie s rozlišovaním veľkých a malých písmen.
- Zjednodušene povedané , Porovnanie textu znamená porovnávanie bez ohľadu na veľkosť písmen.
- Návratová hodnota
- Vracia pozíciu v reťazec1 z ktorého reťazec2 začalo.
- V prípade reťazec2 sa nenachádza v rámci reťazec1 počnúc spustenie vráti 0.
- Ak sa reťazec1 má nulovú dĺžku, vráti 0.
- Ak sa reťazec2 má nulovú dĺžku, vráti argument spustenie .
- A nakoniec, ak niektorý z reťazec1 alebo reťazec2 je . Null , vráti chybu.
3 jednoduché príklady na použitie funkcie VBA InStr
V tejto časti si ukážeme tri jednoduché príklady použitia VBA InStr Pozrime sa na prvý príklad funkcie InStr funkcie v kódoch VBA.
1. Rozhodovanie o tom, či adresa je alebo nie je e-mailová adresa pomocou funkcie VBA InStr
V tomto prípade sme prevzali súbor údajov obsahujúci niekoľko kontaktných adries zákazníkov. Naším cieľom tu bude identifikovať, či sú tieto adresy e-mailové alebo nie.
Teraz vytvoríme kód VBA pomocou InStr funkcie na určenie, či ide o e-mailovú adresu alebo nie. Ak to chcete urobiť, postupujte podľa nasledujúcich krokov.
Kroky:
- Na začiatku prejdite na Vývojár a vyberte kartu Visual Basic ( Alebo stlačte Alt+F11) otvoriť VBA okno.
- Potom na VBA prejdite do okna Vložiť> Modul .
- Potom do modulu vložte nasledujúci 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
- Okrem toho sme vytvorili funkciu s názvom ROZHODNUTIE . Rozhoduje o tom, či je adresa e-mailovou adresou alebo nie. Aplikujme funkciu na súbor údajov, ktorý máme k dispozícii.
- Na bunke C5 , zapíšte nasledujúci vzorec a potom automaticky vyplňte zvyšok buniek pomocou Rukoväť náplne .
=DECISION(B5)
- Ako vidíme, každú adresu sme identifikovali bez ohľadu na to, či ide o e-mailovú adresu alebo nie.
🎓 Ako funguje kód?
- Funkcia DECISION(string1 As String)
Najprv sa vytvorí funkcia s názvom ROZHODNUTIE s reťazcovým argumentom s názvom reťazec1 .
- Dim Pozícia ako celé číslo
Deklaruje celočíselnú premennú s názvom Pozícia .
- Pozícia = InStr(1, string1, "@", 0)
Tým sa priradí hodnota Pozícia premennú ako výstup InStr s argumentmi 1, string1, "@" a 0 . Stručne povedané, priradí pozíciu v adrese, kde sa nachádza "@" .
- Ak pozícia = 0 potom DECISION = "Nie e-mail"
Priraďuje výstup ROZHODNUTIE funkciu ako "Nie e-mail" , ak Pozícia premenná je 0 , to znamená, že neexistoval žiadny "@" v adrese.
(Pripomeňme, že ak sa v danom reťazci nenájde žiadny reťazec, InStr funkcia vracia 0 ).
- Inak DECISION = "E-mail"
Tým sa priradí výstup ROZHODNUTIE funkciu ako "E-mail" ak by existovala "@" v adrese. Teda adresy, kde je "@" sú kategorizované ako E-mail a ostatné sú zaradené do kategórie "Nie e-mail" .
Podobné čítania
- Ako používať funkciu VBA UCASE v programe Excel (4 príklady)
- Používanie funkcie MsgBox v programe Excel VBA (kompletný návod)
- Ako používať funkciu VBA SPLIT v programe Excel (5 príkladov)
- Použitie funkcie LCase v programe VBA v programe Excel (so 4 príkladmi)
- Ako používať funkciu Fix v programe Excel VBA (4 príklady)
2. Využitie funkcie VBA InStr pre Extrahovanie prípon niektorých e-mailových adries
Tu máme zoznam e-mailových adries niektorých zákazníkov. Tentoraz získame rozšírenie e-mailovej adresy, ako napr. či majú gmail.com alebo yahoo.com .
Postupujte podľa nasledujúcich krokov.
Kroky:
- Na začiatku otvorte, podobne ako pri predchádzajúcej metóde, nový VBA a do okna vložte nasledujúci kód.
Function EXTENSION(Email As String) Dim Position As Integer Position = InStr(1, Email, "@", 0) EXTENSION = Right(Email, (Len(Email) - Position)) End Function
- Okrem toho sme vytvorili funkciu s názvom ROZŠÍRENIE . Extrahuje príponu ľubovoľnej e-mailovej adresy.
- Ďalej použime túto funkciu na súbor údajov, ktoré máme. Najprv zadajte tento vzorec do bunky C5 a potom dvakrát kliknite na Rukoväť náplne .
=EXTENSION(B5)
- Nakoniec vidíme, že sme úspešne extrahovali príponu všetkých e-mailov.
🎓 Ako funguje kód?
- Funkcia EXTENSION(E-mail ako reťazec)
Tým sa vytvorí nová funkcia s názvom ROZŠÍRENIE , s argumentom s názvom reťazca E-mail .
- Dim Pozícia ako celé číslo
Táto časť deklaruje celočíselnú premennú s názvom Pozícia.
- Pozícia = InStr(1, E-mail, "@", 0)
Tým sa priradí hodnota Pozícia premennú ako výstup InStr s argumentmi 1, E-mail, "@" a 0 Stručne povedané, priraďuje sa pozícia v E-mail kde je "@" .
- EXTENSION = Right(Email, (Len(Email) - Position))
Táto časť priraďuje výstup ROZŠÍRENIE ako znaky za symbolom "@" Ide o požadované rozšírenie E-mail .
3. Extrahovanie mena alebo priezviska z mena pomocou funkcie VBA InStr
Nakoniec vykonáme jednoznačne inú úlohu. Tentoraz máme k dispozícii mená niektorých zamestnancov spoločnosti. A pokúsime sa vytvoriť funkciu, ktorá bude extrahovať buď meno, alebo priezvisko zamestnancov.
Postupujte podľa nasledujúcich krokov.
Kroky:
- Po prvé, podobne ako metóda 1 , vložte nasledujúci kód do nového modulu v okne VBA.
Funkcia 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
- Tu sme vytvorili funkciu s názvom KRÁTKE MENO ktorý z mena extrahuje buď meno, alebo priezvisko. Aplikujme tento vzorec na náš súbor údajov.
- Ak chcete najprv získať prvé meno, zapíšte nasledujúci vzorec do bunky C5 .
= SKRÁTENÝ NÁZOV(B5,-1)
- Nakoniec, aby sme získali priezviská, zapíšeme nasledujúci vzorec D5 :
= SKRÁTENÝ NÁZOV(B5,1)
- Ak potom automaticky vyplníme zvyšok buniek pomocou Obsluha náplne , uvidíme náš požadovaný výsledok.
🎓 Ako funguje kód?
- Funkcia SHORTNAME(Name As String, First_or_Last As Integer)
Vytvorí novú funkciu s názvom KRÁTKE MENO s jedným argumentom String s názvom Názov a jeden celočíselný argument s názvom Prvý_alebo_posledný .
- Dim Break As Integer
Táto časť deklaruje novú celočíselnú premennú s názvom Prestávka .
- Break = InStr(1, Name, " ", 0)
Priraďuje hodnotu Prestávka premennú ako výstup InStr s argumentmi 1, Názov, " " a 0 Stručne povedané, priraďuje sa pozícia v Názov kde je medzera (" ").
- Ak First_or_Last = -1 potom SHORTNAME = Left(Name, Break - 1)
Tento riadok priraďuje výstup KRÁTKE MENO ako znaky pred priestor , ak Prvý_alebo_posledný argument je -1. Toto je prvé meno.
- SHORTNAME = Right(Name, Len(Name) - Break)
Táto časť priraďuje výstup KRÁTKE MENO ako znaky za priestor , ak Prvý_alebo_posledný argument je 1. Toto je priezvisko.
Záver
Týmto spôsobom môžete písať kódy VBA pomocou InStr funkciu, ktorá zistí pozíciu konkrétneho reťazca v rámci iného daného reťazca, a potom si môžete vytvoriť vlastné funkcie na rôzne použitie. Okrem toho, ak máte nejaké otázky, neváhajte sa nás opýtať.