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