Vba: jak liczyć wystąpienia znaków w ciągu
Do zliczenia liczby wystąpień znaku w ciągu znaków przy użyciu języka VBA można użyć następującej podstawowej składni:
Sub CountOccurrences()
Dim i As Integer
'Specify character to look for
my_char = "/"
'Count occurrences in each string in B2:B12 and display results in C2:C12
For i = 2 To 12
Count = (Len(Range(" B " & i)) - Len(Replace(Range(" B " & i), my_char, ""))) / Len(my_char)
Range(" C " & i) = Count
Next i
End Sub
Ten konkretny przykład zlicza liczbę wystąpień ukośnika ( / ) w każdej komórce w zakresie B2:B12 i wyświetla wyniki w zakresie C2:C12 .
Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.
Przykład: Zliczanie wystąpień znaków w ciągu znaków przy użyciu języka VBA
Załóżmy, że mamy w Excelu następujący zestaw danych, który pokazuje nazwiska różnych koszykarzy i pozycje, na jakich mogą grać w meczu:
Załóżmy, że chcemy policzyć liczbę ukośników ( / ) w każdym ciągu znaków w kolumnie Pozycja.
W tym celu możemy utworzyć następujące makro:
Sub CountOccurrences()
Dim i As Integer
'Specify character to look for
my_char = "/"
'Count occurrences in each string in B2:B12 and display results in C2:C12
For i = 2 To 12
Count = (Len(Range(" B " & i)) - Len(Replace(Range(" B " & i), my_char, ""))) / Len(my_char)
Range(" C " & i) = Count
Next i
End Sub
Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:
Wartości w kolumnie C wyświetlają liczbę wystąpień ukośników w pasujących ciągach w kolumnie B.
Na przykład:
- Ciąg Straż/Naprzód zawiera 1 ukośnik.
- Ciąg ochronny zawiera 0 ukośników.
- Ciąg ochronny zawiera 0 ukośników.
- Ciąg Do przodu/Środek zawiera 1 ukośnik.
I tak dalej.
Aby policzyć wystąpienia innego znaku, po prostu zmień znak zmiennej my_char w makrze.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w VBA:
VBA: jak sprawdzić, czy ciąg zawiera inny ciąg
VBA: Jak policzyć liczbę wierszy w zakresie
VBA: Jak pisać funkcje COUNTIFS i COUNTIFS