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?

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir