Jak znaleźć ciąg z VBA w Excelu (8 przykładów)

  • Udostępnij To
Hugh West

Wdrażanie VBA jest najbardziej efektywną, najszybszą i najbezpieczniejszą metodą wykonywania dowolnych operacji w Excelu. W tym artykule pokażemy, jak znaleźć określone ciągi znaków w innym podanym ciągu przy użyciu VBA w Excelu.

Pobierz szablon praktyki

Darmowy szablon Excela z praktyką można pobrać stąd.

VBA do wyszukiwania w String.xlsm

Funkcja InStr

Microsoft Excel posiada wbudowaną funkcję o nazwie funkcja InStr aby znaleźć pozycję określonych ciągów w danym Stringu.

Generic Syntax:

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

Tutaj,

Argumenty Wymagane/ Fakultatywne Definicja
start Opcjonalnie Pozycja początkowa wyszukiwania.
  • Domyślnie InStr Funkcja oblicza pozycję znaku licząc od 1, a nie od pozycji startowej. Możesz więc zostawić to puste, jeśli chcesz.
ciąg1 Wymagane Ciąg do wyszukiwania w, Primary String.
ciąg2 Wymagane Łańcuch, który ma być wyszukiwany w łańcuchu podstawowym.
porównaj Opcjonalnie Na stronie InStr domyślnie rozróżnia wielkość liter, ale jeśli chcesz uruchomić funkcję bez rozróżniania wielkości liter InStr , to możesz przekazać tutaj argument, aby wykonać określone porównanie. Ten argument może mieć następujące wartości,
  • vbBinaryCompare -> wykonuje porównanie binarne, zwraca wartość 0
  • vbTextCompare -> wykonuje porównanie tekstu, wartość zwrotna 1
  • vbDatabaseCompare -> wykonuje porównanie bazy danych, wartość zwrotna 2

Domyślnie, InStr przyjmuje vbBinaryCompare jako argument porównania.

8 Proste przykłady, aby znaleźć określoną pozycję w podanym łańcuchu za pomocą VBA

Zobaczmy kilka prostych przykładów, aby uzyskać pozycje określonych ciągów w danym łańcuchu za pomocą VBA .

1. VBA do znalezienia pozycji tekstu w łańcuchu.

Poniżej znajduje się przykład InStr aby znaleźć pozycję tekstu w łańcuchu.

  • Naciśnij Alt + F11 na klawiaturze lub przejdź do zakładki Programista -> Visual Basic otworzyć Edytor Visual Basic .

  • W wyskakującym oknie kodu, na pasku menu, kliknij Insert -> Moduł .

  • Teraz w oknie kodu napisz prosty InStr program wewnątrz Procedura pomocnicza VBA (patrz niżej).
 Sub INSTR_Example() MsgBox InStr("Szczęście to wybór", "wybór") End Sub 

Twój kod jest teraz gotowy do uruchomienia.

  • Naciśnij F5 na klawiaturze lub z paska menu wybrać Run -> Run Sub/UserForm. Możesz też po prostu kliknąć na mała ikona Play na pasku podmenu, aby uruchomić makro.

Zobaczysz, że wyskakujące okienko z komunikatem poda Ci liczba określająca pozycję tekstu, który chciałeś sprawdzić.

Wyjaśnienie:

Nasz główny ciąg, " Szczęście to wybór " jest 21 literowym zdaniem (ze spacjami) i chcieliśmy znaleźć pozycję tekstu " wybór " w tym ciągu. Tekst " wybór " rozpoczął się od 16 pozycji struny podstawowej, stąd otrzymaliśmy numer 16 jako nasze wyjście w oknie wiadomości.

2. VBA do wyszukiwania tekstu z określonej pozycji w łańcuchu.

Teraz dowiedzmy się, co by się stało, gdybyśmy chcieli uzyskać pozycję z pewnej liczby.

  • W taki sam sposób jak poprzednio, otwórz Edytor Visual Basic od Deweloper zakładka i Wkładka a Moduł w oknie kodu.
  • W oknie kodu napisz prosty InStr program pokazany powyżej i przekaż w argumencie start wartość zgodną z pozycją, od której chcesz liczyć swój tekst.
 Sub INSTR_Example() MsgBox InStr(17, "Szczęście to wybór", "wybór") End Sub 

  • Następny, Uruchom kod.

Zobaczysz, że wyskakujące okienko z komunikatem poda Ci liczba określająca pozycję tekstu startując z określonej pozycji które chciałeś sprawdzić.

Wyjaśnienie:

Jak już wiedzieliśmy (z dyskusji w fazie 1), że tekst " wybór " rozpoczął się z pozycji 16 , więc wstawiliśmy dwa " wybór " w ciągu głównym i ustaw 17 jako nasz pierwszy parametr, aby pominąć pierwszy " wybór ". Tak więc, my Uruchom powyższe makro i pokazało nam pozycję numer 27 który jest dokładnie numerem pozycji druga " wybór " w podanym ciągu znaków.

3. VBA do wyszukiwania tekstu z rozróżnianiem wielkości liter w funkcji InStr w String

Od wprowadzenia InStr Wiesz już, że domyślnie funkcja InStr Funkcja rozróżnia wielkość liter, przekonajmy się o tym na przykładzie.

Zob. VBA kod, w którym chcieliśmy znaleźć pozycję słowa " Wybór " z duże "C" w ciągu " Szczęście to wybór ", gdzie wybór pisze się z. małe "c" .

  • Uruchom kod i znaleźć 0 jako nasze wyjście.

To dlatego, że InStr funkcja leczy duże "C" oraz małe "c" inaczej. Więc wyszukał słowo " Wybór " w ciągu i nie uzyskał żadnego dopasowania, więc zwrócił 0 .

  • Aby InStr funkcja bez rozróżniania wielkości liter , ustaw argument compare na vbTextCompare (patrz niżej).
 Sub INSTR_Example() MsgBox InStr(1, "Szczęście jest wyborem i możliwością wyboru", "Wybór", vbTextCompare) End Sub 

  • Uruchom kod.

Otrzymasz pozycja tekstu z ciągu, czy tekst jest zapisany w duże lub małe litery .

4. VBA do wyszukiwania tekstu z prawej strony łańcucha znaków

Do tej pory InStr Funkcja dawała nam tylko pozycję z lewej strony ciągu. Ale co jeśli chcemy znaleźć pozycję tekstu z prawej strony ciągu.

Funkcja InStrRev szuka z prawej strony. InStrRev Funkcja działa bardzo podobnie do InStr funkcja i znajdzie ci pozycję tekstu z prawa strona ciągu.

Zobacz poniższe przykłady, aby zrozumieć różnicę.

  • Jeśli uruchomimy następujący kod z InStr funkcja wtedy,

daje nam pozycję ( 16 ) pierwszego tekstu " wybór ".

  • Ale jeśli uruchomimy ten sam kod z InStrRev Funkcja wtedy,

daje nam pozycję ( 27 ) ostatniego tekstu " wybór ".

Podobne Lektury:

  • FindNext Używanie VBA w Excelu (2 przykłady)
  • Jak znaleźć i zastąpić za pomocą VBA (11 sposobów)
  • Znajdź Dokładne dopasowanie za pomocą VBA w Excelu (5 sposobów)

5. VBA, aby znaleźć pozycję znaku w łańcuchu.

Możesz również znaleźć pozycję określonego znaku w ciągu w ten sam sposób, w jaki znalazłeś tekst.

  • Skopiuj następujący kod do swojego VBA okno kodu
 Sub Find_Character() Dim z As Long z = InStr("Szczęście to wybór", "e") MsgBox z End Sub 

  • Oraz Uruchom makro.

Pierwszy " e " w naszym podanym ciągu znajduje się pod numerem 7 stanowisko.

6. VBA, aby znaleźć podłańcuch w łańcuchu.

Tutaj dowiemy się, jak znaleźć, czy ciąg znaków zawiera podciąg lub nie.

Aby to uzyskać, musimy uruchomić IF Statement w naszym kodzie.

  • W taki sam sposób jak poprzednio, otwórz Edytor Visual Basic od Deweloper zakładka i Wkładka a Moduł w oknie kodu.
  • W oknie kodu skopiuj poniższy kod i wklej go.
 Public Sub FindSub() If InStr("Szczęście to wybór", "wybór") = 0 Then MsgBox "Nie znaleziono dopasowania" Else MsgBox "Znaleziono dopasowanie" End If End Sub 

Twój kod jest teraz gotowy do uruchomienia.

  • Uruchom makro.

Jeśli twój łańcuch zawiera podłańcuch to dostaniesz znaleziony mecz W naszym przykładzie chcieliśmy dowiedzieć się, czy nasz podstawowy ciąg znaków " Szczęście to wybór " zawiera słowo " wybór " lub nie. Jak to zrobi, dostaniemy Znaleziono dopasowanie wynik.

7. VBA, aby znaleźć ciąg w zakresie komórek

Możesz wyszukać określony tekst w zakresie komórek z ciągiem i zwrócić określony ciąg.

Spójrz na poniższy przykład, gdzie znajdziemy " Dr. ", a gdy nastąpi dopasowanie, zwróci " Doktor ".

  • Poniżej znajduje się kod pozwalający uzyskać omawiany wyżej wynik,
 Sub Find_String_in_Range() Dim cell As Range For Each cell In Range("B5:B10") If InStr(cell.Value, "Dr.")> 0 Then cell.Offset(0, 1).Value = "Doctor" End If Next cell End Sub 

  • Uruchom kod i wynik jest pokazany poniżej

  • Możesz zmodyfikować makro w zależności od swoich potrzeb. Na przykład, jeśli chcesz znaleźć " Prof. " w dowolnej komórce ciągu, a także uzyskać " Prof. " jako zwrot, to po prostu przekaż " Prof. " jako wartość zamiast " Dr ." w 4. linii makra oraz " Prof. " zamiast " Doktor " w 5. linii makra i odpowiednio zdefiniować numer zakresu komórek.

8. VBA, aby znaleźć ciąg znaków w komórce

Można również wyszukiwanie określonego tekstu w pojedynczej komórce ciągu znaków i zwrócić określony ciąg znaków.

  • Skopiuj poniższy kod i wklej go do okna kodu.
 Sub Find_String_in_Cell() If InStr(Range("B5").Value, "Dr.")> 0 Then Range("C5").Value = "Doktor" End If End Sub 

Wyszuka on " Dr. " w Komórka B5 i jeśli znajdzie dopasowanie, to zwraca " Doktor " w Komórka C5 .

  • Możesz zmodyfikować makro w zależności od swoich potrzeb. Na przykład, jeśli chcesz znaleźć " Prof. " w dowolnej komórce ciągu, i otrzymujemy " Prof. " jako zwrot, to po prostu przekaż " Prof. " jako wartość zamiast " Dr ." w 2. linii makra oraz " Prof. " zamiast " Doktor " w 3. linii makra i odpowiednio zdefiniować numer referencyjny komórki.

Wniosek

W tym artykule pokazano, jak znaleźć określone teksty w ciągu w Excelu za pomocą Makro VBA. Mam nadzieję, że ten artykuł był dla Ciebie bardzo korzystny. Zapraszam do zadawania wszelkich pytań związanych z tematem.

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