Jak używać funkcji InStr w VBA (3 proste przykłady)

  • Udostępnij To
Hugh West

Pracując z kodami VBA w Excelu, natrafiamy na kilka wbudowanych funkcji, które przekształcają złożone zadanie w mały, jednolinijkowy kod. InStr jest taką funkcją dostępną w Excelu VBA, która wyszukuje dany ciąg znaków wewnątrz innego danego ciągu, zaczynając od danej pozycji. Dzisiaj pokażę, jak można wykorzystać funkcję InStr funkcja w VBA do wyszukiwania określonego ciągu znaków wewnątrz innego podanego ciągu.

Pobierz Zeszyt ćwiczeń

Funkcja InStr.xlsm

Wprowadzenie do Funkcja VBA InStr

  • Podsumowanie

Wyszukuje określony łańcuch w danym łańcuchu, zaczynając od podanej pozycji. Jeśli znajdzie dopasowanie, zwraca pozycję w podanym łańcuchu, od której rozpoczęło się dopasowanie.

  • Składnia

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

  • Argumenty
ARGUMENT WYMAGANIA OPIS

[start] Opcjonalnie Pozycja, od której rozpocznie się wyszukiwanie. Domyślnie jest to 1.
ciąg1 Wymagane Ciąg znaków, w obrębie którego wyszukuje dany ciąg znaków.
ciąg2 Wymagane Łańcuch, którego szuka w obrębie danego ciągu znaków.
[porównaj] Opcjonalnie Wartość liczbowa z przedziału {-1,0,1,2} określająca rodzaj porównania. Domyślnie jest -1 (vbUseCompareOption). Jeżeli nie jest określona opcja Porównaj, to zostanie wykonane Porównanie binarne.

Uwaga:

  • Chociaż [start] argument i [porównaj] są opcjonalne, potrzebujesz [start] argument, jeśli podasz [porównaj] W przeciwnym razie zostanie zgłoszony błąd.
  • Jeżeli jeden lub oba [start] argument i [porównaj] argumentem jest Null , pojawi się błąd.
  • Cztery podane wartości w [porównaj] argument wykonuje cztery różne rodzaje porównań. Są one wymienione poniżej:
WARTOŚĆ CONSTANT OPIS

-1 vbUseCompareOption Wykonuje porównanie określone w instrukcji Option Compare.
0 vbBinaryCompare Wykonuje porównanie binarne.
1 vbTextCompare Wykonuje porównanie tekstu.
2 vbDatabaseCompare Wykonuje porównanie w oparciu o Twoją bazę danych.
  • Option Compare Instrukcja jest instrukcją podawaną przed rozpoczęciem głównego kodu VBA. Określa ona, czy kod będzie szukał w razie potrzeby porównania binarnego czy tekstowego.

Opcja Porównaj tekst

    • W uproszczeniu , Porównanie binarne oznacza porównywanie z uwzględnieniem wielkości liter.
    • W uproszczeniu , Porównywanie tekstów oznacza porównywanie bez rozróżniania wielkości liter.
  • Wartość zwrotna
    • Zwraca pozycję w ciąg1 z którego ciąg2 zaczął.
    • W przypadku ciąg2 nie znajduje się w ciąg1 począwszy od start pozycja, zwraca 0.
    • Jeśli ciąg1 ma długość zero, zwraca 0.
    • Jeśli ciąg2 ma długość zero, zwraca argument start .
    • I wreszcie, jeśli któryś z ciąg1 lub ciąg2 jest Null , zwraca błąd.

3 Proste przykłady użycia funkcji VBA InStr

W tym rozdziale zobaczymy trzy proste przykłady zastosowania VBA InStr Zobaczmy pierwszy przykład zastosowania funkcji InStr funkcja w kodach VBA.

1) Ustalenie, czy adres jest adresem e-mail czy nie za pomocą funkcji VBA InStr

Tutaj wzięliśmy zestaw danych zawierający pewne adresy kontaktowe klientów. Naszym celem będzie tutaj zidentyfikowanie, czy adresy są adresami e-mail, czy nie.

Teraz stworzymy kod VBA wykorzystujący InStr Aby to zrobić, wykonaj poniższe kroki.

Kroki:

  • Na początku należy udać się do Deweloper zakładka i wybrać Visual Basic ( Lub naciśnij Alt+F11) aby otworzyć VBA okno.

  • Następnie, na VBA okno, przejdź do Insert> Moduł .

  • Po tym, na module, wklejamy następujący kod:
 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 

  • Ponadto utworzyliśmy funkcję o nazwie DECYZJA . decyduje o tym, czy adres jest adresem e-mail czy nie. Zastosujmy funkcję do zestawu danych, które mamy.
  • Na komórce C5 zapisujemy następującą formułę, a następnie automatycznie wypełniamy pozostałe komórki za pomocą Uchwyt do napełniania .
=DECYZJA(B5)

  • Jak widzimy, zidentyfikowaliśmy każdy adres niezależnie od tego, czy jest to adres e-mail, czy nie.

🎓 Jak działa kodeks?

  • Function DECISION(string1 As String)

Po pierwsze, tworzy to funkcję o nazwie DECYZJA z argumentem łańcuchowym o nazwie ciąg1 .

  • Dim Pozycja As Integer

Deklaruje zmienną całkowitą o nazwie Pozycja .

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

Przypisuje to wartość Pozycja zmienna jako wyjście InStr funkcja z argumentami 1, string1, "@" oraz 0 . W skrócie, to przypisuje pozycję w adresie, gdzie jest "@" .

  • If Position = 0 Then DECISION = "Not Email"

Przypisuje on wyjście DECYZJA funkcjonować jako "Nie Email" , jeśli Pozycja zmienna to 0 to znaczy, że nie było "@" w adresie.

(Przypomnijmy, że jeśli jakiś ciąg nie zostanie znaleziony wewnątrz podanego ciągu, to InStr funkcja zwraca 0 ).

  • Else DECISION = "Email"

Przypisuje to wyjście DECYZJA funkcjonować jako "Email" gdyby istniał "@" w adresie. Tak więc adresy, w których jest "@" są skategoryzowane jako Email , a pozostałe są sklasyfikowane jako "Nie Email" .

Podobne lektury

  • Jak używać funkcji VBA UCASE w Excelu (4 przykłady)
  • Użyj funkcji MsgBox w Excelu VBA (Kompletny przewodnik)
  • Jak używać funkcji VBA SPLIT w Excelu (5 przykładów)
  • Użyj funkcji LCase w VBA w Excelu (z 4 przykładami)
  • Jak używać funkcji Fix w Excelu VBA (4 przykłady)

2. Wykorzystanie funkcji VBA InStr do Wyodrębnianie rozszerzenia niektórych adresów e-mail

Mamy tu listę adresów e-mail niektórych klientów. Tym razem wyodrębnimy rozszerzenie adresu e-mail, jak np. czy mają one gmail.com lub yahoo.com .

Aby to zrobić, wykonaj poniższe kroki.

Kroki:

  • Na początek, podobnie jak w poprzedniej metodzie, otwórz nowy VBA moduł i wklej w oknie następujący kod.
 Function EXTENSION(Email As String) Dim Position As Integer Position = InStr(1, Email, "@", 0) EXTENSION = Right(Email, (Len(Email) - Position)) End Function 

  • Dodatkowo utworzyliśmy funkcję o nazwie ROZSZERZENIE Wyodrębnia rozszerzenie dowolnego adresu e-mail.
  • Ponadto, zastosujmy tę funkcję do zestawu danych, które mamy. Najpierw wprowadź tę formułę w komórce C5 a następnie kliknij dwukrotnie na Uchwyt do napełniania .
=EXTENSION(B5)

  • Na koniec widzimy, że udało nam się wyodrębnić rozszerzenie wszystkich wiadomości e-mail.

🎓 Jak działa kodeks?

  • Function EXTENSION(Email As String)

Tworzy to nową funkcję o nazwie ROZSZERZENIE , z argumentem w postaci ciągu znaków o nazwie Email .

  • Dim Pozycja As Integer

Ta część deklaruje zmienną typu integer o nazwie Stanowisko.

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

Przypisuje to wartość Pozycja zmienna jako wyjście InStr funkcja z argumentami 1, Email, "@" oraz 0 Krótko mówiąc, przypisuje to pozycję w Email gdzie jest "@" .

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

Ta część przypisuje wyjście z ROZSZERZENIE funkcjonują jako znaki po symbolu "@" To jest wymagane przedłużenie Email .

3. wyodrębnianie imienia lub nazwiska z nazwy za pomocą funkcji VBA InStr

Na koniec wykonamy zupełnie inne zadanie. Tym razem mamy do dyspozycji nazwiska niektórych pracowników pewnej firmy. I spróbujemy zbudować funkcję, która wyodrębni albo imię, albo nazwisko pracowników.

Aby to zrobić, wykonaj poniższe kroki.

Kroki:

  • Po pierwsze, podobnie jak w przypadku sposób 1 , wklej poniższy kod w nowym module w oknie 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 

  • Tutaj utworzyliśmy funkcję o nazwie NAZWA SKRÓCONA która wyodrębnia z nazwy imię lub nazwisko. Zastosujmy tę formułę do naszego zestawu danych.
  • Na początku, aby wyodrębnić pierwsze imię, zapisz w komórce poniższą formułę C5 .
=SHORTNAME(B5,-1)

  • Na koniec, aby wyodrębnić ostatnie nazwiska, zapisujemy następującą formułę w D5 :
=SHORTNAME(B5,1)

  • Następnie, jeśli automatycznie wypełnimy resztę komórek za pomocą Obsługa napełniania , zobaczymy nasz pożądany rezultat.

🎓 Jak działa kodeks?

  • Function SHORTNAME(Nazwisko As String, Imię_lub_Ostatnie As Integer)

Tworzy ona nową funkcję o nazwie NAZWA SKRÓCONA z jednym argumentem String o nazwie Nazwa oraz jeden Argument Integer o nazwie First_or_Last .

  • Dim Break As Integer

Ta część deklaruje nową zmienną typu integer o nazwie Przerwa .

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

Przypisuje on wartość Przerwa zmienna jako wyjście InStr funkcja z argumentami 1, Nazwa, " " oraz 0 Krótko mówiąc, przypisuje to pozycję w Nazwa gdzie jest spacja (" ").

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

Ten wiersz przypisuje wyjście z NAZWA SKRÓCONA jako znaki przed przestrzeń , jeśli First_or_Last argument wynosi -1. Jest to pierwsze imię.

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

Ta część przypisuje wyjście z NAZWA SKRÓCONA funkcjonują jako znaki po przestrzeń , jeśli First_or_Last argumentem jest 1. Jest to nazwisko.

Wniosek

W ten sposób można pisać kody VBA za pomocą InStr funkcja, która znajduje pozycję określonego łańcucha wewnątrz innego danego łańcucha, a następnie możesz tworzyć własne funkcje do różnych zastosowań. Ponadto, jeśli masz jakiekolwiek pytania, nie krępuj się zapytać nas.

Hugh West jest bardzo doświadczonym trenerem i analitykiem Excela z ponad 10-letnim doświadczeniem w branży. Posiada tytuł licencjata w dziedzinie rachunkowości i finansów oraz tytuł magistra administracji biznesowej. Hugh ma pasję do nauczania i opracował unikalne podejście do nauczania, które jest łatwe do naśladowania i zrozumienia. Jego specjalistyczna wiedza na temat programu Excel pomogła tysiącom studentów i profesjonalistów na całym świecie doskonalić swoje umiejętności i osiągać doskonałe wyniki w karierze. Za pośrednictwem swojego bloga Hugh dzieli się swoją wiedzą ze światem, oferując bezpłatne samouczki programu Excel i szkolenia online, aby pomóc osobom indywidualnym i firmom w pełni wykorzystać swój potencjał.