Vba: bir dizedeki karakterler nasıl değiştirilir?
Bir dizedeki karakterleri değiştirmek için VBA’daki Change() yöntemini kullanabilirsiniz.
Bu yöntem aşağıdaki temel sözdizimini kullanır:
Değiştir(ifade, bul, değiştir, başlat, say)
Altın:
- ifade : Karakterlerini değiştirmek istediğiniz dize
- find : Bulunacak dize
- değiştirin : Değiştirme olarak kullanılacak dize
- start ( isteğe bağlı ) : Aranacak dizedeki başlangıç konumu
- count ( isteğe bağlı ) : Gerçekleştirilecek değiştirme sayısı
Aşağıdaki örnekler, bu yöntemin pratikte Excel’deki aşağıdaki dize listesiyle nasıl kullanılacağını gösterir:
Örnek 1: Bir dizedeki karakterlerin tüm oluşumlarını değiştirmek için VBA’yı kullanın (büyük/küçük harfe duyarlı)
Diyelim ki her dizede “this” i “THAT” ile değiştirmek istiyoruz.
Bunun için aşağıdaki makroyu oluşturabiliriz:
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(Range(" A " & i), " this ", " THAT ") Next i End Sub
Bu makroyu çalıştırdığımızda aşağıdaki çıktıyı alıyoruz:
B Sütunu, A sütunundaki dizelerin her birini görüntüler ve “bu” ifadesinin her geçtiği yer “ŞUN” ile değiştirilir.
Bu değiştirmenin büyük/küçük harfe duyarlı olduğunu unutmayın.
Yani, “bu”nun her geçtiği yer değiştirilir ancak “bu”nun her geçtiği yer olduğu gibi bırakılır.
Örnek 2: Bir dizedeki karakterlerin tüm tekrarlarını değiştirmek için VBA’yı kullanın (büyük/küçük harfe duyarlı değil)
Diyelim ki her dizede “bu”yu (büyük/küçük harfe bakılmaksızın) “THAT” ile değiştirmek istiyoruz.
Bunun için aşağıdaki makroyu oluşturabiliriz:
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(LCase(Range(" A " & i)), " this ", " THAT ") Next i End Sub
Bu makroyu çalıştırdığımızda aşağıdaki çıktıyı alıyoruz:
B Sütunu, A sütunundaki dizelerin her birini görüntüler ve “bu” ifadesinin her geçtiği yer “ŞUN” ile değiştirilir.
Bu değiştirmenin büyük/küçük harfe duyarlı olmadığını unutmayın.
Yani, “bu” ifadesinin (büyük harfle yazılmış olsun ya da olmasın) her yeri değiştirilir.
Bu büyük/küçük harfe duyarlı olmayan değiştirmeyi, her dizede “this” ifadesini aramadan önce A sütunundaki her dizeyi küçük harfe dönüştürmek için LCase yöntemini kullanarak gerçekleştirebildik.
Örnek 3: Bir Dizedeki Bir Karakterin İlk N Oluşumunu Değiştirmek için VBA’yı Kullanma
Her dizede yalnızca ilk “this” ifadesini (büyük/küçük harfe bakılmaksızın) “THAT” ile değiştirmek istediğimizi varsayalım.
Bunun için aşağıdaki makroyu oluşturabiliriz:
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(LCase(Range(" A " & i)), " this ", " THAT ", Count:=1) Next i End Sub
Bu makroyu çalıştırdığımızda aşağıdaki çıktıyı alıyoruz:
B sütunu, A sütunundaki dizelerin her birini, “this” ifadesinin yalnızca ilk geçtiği yer “THAT” ile değiştirilerek görüntüler.
Belirli bir dizenin yalnızca ilk oluşumunu değiştirmek için Count:=1 kullandığımızı unutmayın; ancak 1’i, belirli bir dizenin ilk n oluşumunu değiştirmek istediğiniz herhangi bir değerle değiştirebilirsiniz.
Not : VBA Değiştirme yöntemine 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?