Ako používať funkciu InStr vo VBA (3 jednoduché príklady)

  • Zdieľajte To
Hugh West

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

Hugh West je veľmi skúsený tréner a analytik Excelu s viac ako 10-ročnými skúsenosťami v tomto odvetví. Má bakalársky titul v odbore účtovníctvo a financie a magisterský titul v odbore Business Administration. Hugh má vášeň pre vyučovanie a vyvinul jedinečný vyučovací prístup, ktorý sa dá ľahko sledovať a pochopiť. Jeho odborné znalosti Excelu pomohli tisíckam študentov a profesionálov na celom svete zlepšiť svoje zručnosti a vyniknúť vo svojej kariére. Hugh sa prostredníctvom svojho blogu delí o svoje znalosti so svetom a ponúka bezplatné výukové programy Excelu a online školenia, ktoré jednotlivcom a firmám pomôžu naplno využiť ich potenciál.