Vba: birden fazla sınırlayıcıya dayalı bir dize nasıl bölünür
Bir dizeyi VBA’da birden çok sınırlayıcıya göre bölmek için aşağıdaki temel sözdizimini kullanabilirsiniz:
SubSplitString ()
Dim SingleValue() As String
Dim i As Integer
Dim j As Integer
For i = 2 To 7
newString = Replace(Range(" A " & i), " - ", " ")
SingleValue = Split(newString, " ")
For j = 1 To 3
Cells(i, j + 1).Value = SingleValue(j - 1)
Next j
Next i
End Sub
Bu özel örnek, A2:A7 aralığındaki her dizeyi, her dizedeki tire veya boşluklara göre böler ve ardından her dizenin elde edilen öğelerini B, C ve D sütunlarındaki bitişik hücrelere atar.
Not : Bu makro önce her kısa çizgiyi bir boşlukla değiştirir, ardından her dizeyi boşlukların bulunduğu yere göre böler.
Aşağıdaki örnek, bu sözdiziminin pratikte nasıl kullanılacağını gösterir.
Örnek: Bir dizeyi VBA’daki birden çok sınırlayıcıya göre bölme
Excel’de aşağıdaki ad listesine sahip olduğumuzu varsayalım:
Her adı kısa çizgi veya boşluklara göre bölmek istediğimizi ve ardından her dizenin elde edilen öğelerini yeni hücrelere atamak istediğimizi varsayalım.
Bunun için aşağıdaki makroyu oluşturabiliriz:
SubSplitString ()
Dim SingleValue() As String
Dim i As Integer
Dim j As Integer
For i = 2 To 7
newString = Replace(Range(" A " & i), " - ", " ")
SingleValue = Split(newString, " ")
For j = 1 To 3
Cells(i, j + 1).Value = SingleValue(j - 1)
Next j
Next i
End Sub
Bu makroyu çalıştırdığımızda aşağıdaki çıktıyı alıyoruz:
Bu makronun, A sütunundaki her dizeyi boşluklara ve kısa çizgilere göre böldüğünü ve her dizenin ayrı ayrı metin öğelerini B, C ve D sütunlarında görüntülediğini unutmayın.
Not #1: Bu örnekte dizeleri tire ve boşluklara göre bölüyoruz, ancak dizeleri Değiştir ve Böl işlevlerinde belirterek istediğiniz sınırlayıcılara göre bölebilirsiniz.
Not #2 : VBA Split işlevine ilişkin tüm belgeleri burada bulabilirsiniz.
Ek kaynaklar
Aşağıdaki eğitimlerde VBA kullanarak diğer genel görevlerin nasıl gerçekleştirileceği açıklanmaktadır:
VBA: Bir dizedeki karakterlerin oluşumları nasıl sayılır?
VBA: bir dizenin başka bir dize içerip içermediği nasıl kontrol edilir
VBA: Belirli bir metin içeren hücreler nasıl sayılır?