Vba: jak sprawdzić, czy ciąg zawiera inny ciąg
Możesz użyć funkcji Instr() w VBA, aby sprawdzić, czy ciąg znaków zawiera inny ciąg.
Ta funkcja wykorzystuje następującą podstawową składnię:
Instr(start, ciąg1, ciąg2, …)
Złoto:
- start : Pozycja początkowa wyszukiwania
- string1 : Ciąg do wyszukania
- string2 : ciąg, który próbujesz znaleźć
Poniższy przykład pokazuje, jak w praktyce wykorzystać tę funkcję.
Przykład: Użyj języka VBA, aby sprawdzić, czy ciąg znaków zawiera inny ciąg
Załóżmy, że mamy w programie Excel następujący zbiór danych zawierający informacje o różnych drużynach koszykówki:
Załóżmy teraz, że chcemy sprawdzić, czy każdy ciąg w kolumnie Zespół zawiera gdzieś w ciągu ciąg „avs”.
Możemy użyć następującej składni w VBA, aby sprawdzić, czy każdy ciąg znaków w kolumnie Zespół zawiera „avs”, a jeśli tak, zwrócić cały wiersz w kolumnach D i E:
Sub StringContains() Dim i As Integer , i_num As Integer For i = 2 To 9 If InStr(1, LCase(Range(" A " & i)), " avs ") <> 0 Then i_num = i_num + 1 Range(" D " & i_num & " :E " & i_num) = Range(" A " & i & " :B " & i).Value End If Next i End Sub
Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:
Zwróć uwagę, że każdy wiersz zawierający ciąg „avs” gdzieś w kolumnie Zespół jest zwracany w kolumnach D i E.
W tym przykładzie tylko dwie drużyny (Mavs i Cavs) zawierały „avs” w kolumnie Team.
Aby wyszukać inny ciąg, po prostu zamień „avs” w powyższym kodzie na wybrany ciąg.
Uwaga nr 1: W kodzie użyliśmy For i = 2 do 9, ponieważ komórki od A2 do A9 zawierały interesujące nas ciągi znaków. Możesz dowolnie zmieniać ten zakres w zależności od zakresu szukanych komórek.
Uwaga nr 2 : Pełną dokumentację funkcji Instr() w VBA znajdziesz tutaj .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania przy użyciu języka VBA:
VBA: Jak liczyć wystąpienia znaków w ciągu
VBA: Jak policzyć liczbę wierszy w zakresie
VBA: Jak obliczyć średnią wartość zakresu