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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *