Vba: bir dizedeki karakterlerin oluşumlarını sayma
VBA kullanarak bir karakterin bir dizede tekrarlanma sayısını saymak için aşağıdaki temel sözdizimini kullanabilirsiniz:
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
Bu özel örnek , B2:B12 aralığındaki her hücrede eğik çizginin ( / ) oluşum sayısını sayar ve sonuçları C2:C12 aralığında görüntüler.
Aşağıdaki örnek, bu sözdiziminin pratikte nasıl kullanılacağını gösterir.
Örnek: VBA Kullanarak Bir Dizedeki Karakterlerin Oluşumlarını Sayma
Diyelim ki Excel’de farklı basketbolcuların isimlerini ve bir oyunda oynayabilecekleri pozisyonları gösteren aşağıdaki veri setine sahibiz:
Konum sütunundaki her dizedeki eğik çizgilerin ( / ) sayısını saymak istediğimizi varsayalım.
Bunun için aşağıdaki makroyu oluşturabiliriz:
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
Bu makroyu çalıştırdığımızda aşağıdaki çıktıyı alıyoruz:
C sütunundaki değerler, B sütunundaki eşleşen dizelerdeki eğik çizgilerin oluşum sayısını görüntüler.
Örneğin:
- Guard/Forward dizesi 1 eğik çizgi içerir.
- Koruma dizesi 0 eğik çizgi içerir.
- Koruma dizesi 0 eğik çizgi içerir.
- İleri/Orta dizesi 1 eğik çizgi içerir.
Ve benzeri.
Farklı bir karakterin oluşumlarını saymak için makrodaki my_char değişkeninin karakterini değiştirmeniz yeterlidir.
Ek kaynaklar
Aşağıdaki eğitimlerde VBA’da diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:
VBA: bir dizenin başka bir dize içerip içermediği nasıl kontrol edilir
VBA: Aralıktaki satır sayısı nasıl sayılır?
VBA: COUNTIF ve COUNTIFS işlevleri nasıl yazılır?