VBA, aby sprawdzić, czy ciąg zawiera inny ciąg w Excelu (6 metod)

  • 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 sprawdzić, czy ciąg znaków zawiera inny ciąg w Excelu przy użyciu VBA .

Pobierz szablon praktyki

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

VBA to Check If String Contains Value.xlsm

6 Metod w VBA do sprawdzania, czy ciąg zawiera inny ciąg w Excelu

Poniżej w tym dziale znajdziesz 6 skutecznych metod, jak wdrożyć VBA aby sprawdzić czy łańcuch zawiera inny łańcuch czy nie.

1. VBA do sprawdzenia, czy łańcuch zawiera podłańcuch

Poniżej znajduje się przykład funkcja InStr aby znaleźć, czy ciąg zawiera podciąg w Excelu.

Kroki:

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

  • W oknie kodu skopiuj poniższy kod i wklej go.
 Public Sub ContainSub() If InStr("Movie: Iron Man, Batman, Superman, Spiderman, Thor", "Hulk")> 0 Then MsgBox "Movie found" Else MsgBox "Movie not found" End If End Sub 

Twój kod jest teraz gotowy do uruchomienia.

  • Uruchom makro.

Jeśli twój łańcuch zawiera podłańcuch wtedy otrzymasz znalezione dopasowanie, w przeciwnym razie zwróci brak znalezionego dopasowania.

W naszym przykładzie chcieliśmy się dowiedzieć, czy nasz podstawowy ciąg " Film: Iron Man, Batman, Superman, Spiderman, Thor " zawiera słowo " Hulk " lub nie. Ponieważ tak nie jest, otrzymujemy Nie znaleziono filmu wynik.

2. VBA do sprawdzenia, czy ciąg zawiera liczbę

Możesz wyszukiwać czy łańcuchy zawierają liczby czy nie, używając VBA kod.

Spójrz na poniższy przykład, w którym znajdziemy, które ciągi zawierają liczby z nazwami filmów.

Kroki sprawdzające czy ciągi zawierają liczby z VBA podano poniżej.

Kroki:

  • 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.
 Function SearchNumbers(oRng As Range) As Boolean Dim bSearchNumbers As Boolean, i As Long bSearchNumbers = False For i = 1 To Len(oRng.Text) If IsNumeric(Mid(oRng.Text, i, 1)) Then bSearchNumbers = True Exit For End If Next SearchNumbers = bSearchNumbers End Function 
  • Nie jest to Podprocedura dla VBA program do uruchomienia, to jest tworzenie User Defined Function (UDF), który wywołamy w naszym arkuszu, aby wykonać zadanie. Tak więc, po napisaniu kodu, zamiast kliknąć przycisk Uruchom kliknij na przycisk Zapisz z paska menu, aby zapisać plik makra.
  • Teraz wróć do interesującego Cię arkusza i wpisz w nim utworzoną przed chwilą funkcję użytkownika VBA kod ( SearchNumber , w pierwszym wierszu kodu), a wewnątrz nawiasów funkcji wprowadzić numer referencyjny komórki ciągu, która ma liczby wiodące (np. Komórka B5 ).
  • Naciśnij Wejdź na stronę .

Otrzymasz wartość boolean ( TRUE lub Fałszywy ), jeśli ciąg w komórce zawiera liczby to otrzymamy TRUE w przeciwnym razie FALSE .

  • Przeciągnij komórkę w dół o Uchwyt do napełniania aby zastosować formułę do pozostałych komórek, aby sprawdzić, który ciąg zawiera liczby, a który nie.

3. VBA do Extract Numbers from String

W powyższym rozdziale dowiedzieliśmy się jak sprawdzić czy ciąg zawiera liczby czy nie. A w tym rozdziale dowiemy się jak wyodrębnić te liczby i umieścić je w innej komórce na przykładzie podanym poniżej.

Kroki sprawdzające czy ciągi zawierają liczby i wyodrębniające je za pomocą VBA podano poniżej.

Kroki:

  • Otwórz Edytor Visual Basic od Deweloper zakładka i Wkładka a UserForm tym razem z zakładki Insert w oknie kodu.
  • Z pojawiła się Skrzynka narzędziowa , przeciągnij i upuść CommandButton w UserForm .

  • Kliknij dwukrotnie na przycisku, skopiuj poniższy kod i wklej go.
 Private Sub CommandButton1_Click() Worksheets("Number").Range("C2:C15").ClearContents checkNumber (Worksheets("Number").Range("B2:B15")) End Sub checkNumber(objRange As Range) Dim myAccessary As Variant Dim i As Long Dim iRow As Long iRow = 2 For Each myAccessary In objRange For i = 1 To Len(myAccessary.Value) If IsNumeric(Mid(myAccessary.Value, i,1)) Then If Trim(objRange.Cells(objRange.Row - 1, 2)) "" Then objRange.Cells(iRow - 1, 2) = _ objRange.Cells(iRow - 1, 2) & Mid(myAccessary.Text, i, 1) Else objRange.Cells(iRow - 1, 2) = Mid(myAccessary.Text, i, 1) End If End If Next iRow = iRow + 1Next myAccessary End Sub 
  • Uruchom kod i przeniesie Cię do interesującego Cię arkusza.
  • Kliknij przycisk polecenia i otrzymasz wyodrębniony numer z ciągów.

4. VBA do sprawdzenia, czy łańcuch zawiera określoną literę

Ta metoda jest prawie podobna do metody sprawdzania podciągów w łańcuchu.

Poniżej przedstawiamy. InStr funkcja, aby znaleźć, czy ciąg zawiera określoną literę w programie Excel.

Kroki:

  • 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 ContainChar() If InStr("Film: Iron Man, Batman, Superman, Spiderman, Thor", "Z")> 0 Then MsgBox "List znaleziony" Else MsgBox "List nie znaleziony" End If End Sub 

Twój kod jest teraz gotowy do uruchomienia.

  • Uruchom program. Jeśli twój łańcuch zawiera literę wtedy otrzymasz znalezione dopasowanie, w przeciwnym razie zwróci brak znalezionego dopasowania.

W naszym przykładzie chcieliśmy się dowiedzieć, czy nasz podstawowy ciąg " Film: Iron Man, Batman, Superman, Spiderman, Thor " zawiera literę " Z " lub nie. Ponieważ tak nie jest, otrzymujemy Nie znaleziono listu wynik.

5. VBA, aby sprawdzić, czy zakres łańcuchów zawiera inny łańcuch.

W tej sekcji dowiedzieliśmy się, jak sprawdzić, czy dany ciąg zawiera inny ciąg, czy nie. Ale w tej sekcji dowiemy się, jak sprawdzić, czy zakres ciągów zawiera podłańcuch, czy nie, na przykładzie następującego zestawu danych.

Kroki:

  • 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 ContainsSub() If InStr(ActiveSheet.Select, "Hulk")> 0 Then MsgBox "Movie found" Else MsgBox "Movie not found" End If End Sub 

Twój kod jest teraz gotowy do uruchomienia.

  • Uruchom kod.

Jeśli twój zakres łańcuch zawiera podłańcuch wtedy otrzymasz znalezione dopasowanie, w przeciwnym razie zwróci brak znalezionego dopasowania.

6. VBA do wyodrębniania ciągów znaków z łańcucha

W tej części zobaczymy, jak sprawdzić, czy ciągi zawierają określone podciągi i wyodrębnić te w innej komórce.

Wyodrębnimy informacje o nazwach zaczynających się od " Chris " z następującego zbioru danych.

Kroki :

  • 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.
 Sub SearchSub() Dim lastrow As Long Dim i As Integer, count As Integer lastrow = ActiveSheet.Range("A30000").End(xlUp).Row For i = 1 To lastrow If InStr(1, LCase(Range("C" & i)), "Chris") 0 Then count = count + 1 Range("F" & count & ":H" & count) = Range("B" & i & ":D" & i).Value End If Next i End Sub. 

Twój kod jest teraz gotowy do uruchomienia.

  • Uruchom kod.

Tylko nazwy zaczynające się od " Chris " zostaną zapisane w zdefiniowanych wcześniej komórkach.

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