Spis treści
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.