İstenmeyen karakterlerin listesi ve hemen yanındaki sütunda düzeltme karakterlerinin listesi verildiğinde, bu listeden hareketle A sütunundaki verilerde düzeltme işlemi yapıyor.
Konu ile ilgili örnek bir veri setine aşağıdaki bağlantıdan ulaşabilirsiniz.
istenmeyen karakterler veri seti
Option Explicit
Sub IstenmeyenKarakterleriDuzelt()
On Error Resume Next
Dim i, j As Integer
Dim snc As Integer
For i = 1 To [A65536].End(xlUp).Row
For j = 1 To [D65536].End(xlUp).Row
snc = Application. _
WorksheetFunction. _
Find(Range("D" & j), _
Range("A" & i), 1)
If IsNumeric(snc) Then
Range("A" & i) = Application. _
WorksheetFunction. _
Substitute(Range("A" & i), _
Range("D" & j), _
Range("E" & j))
End If
Next
Next
End Sub
Option Explicit
Sub IstenmeyenKarakterleriDuzelt()
'--------------------------------------------------
'Formül tabanlı metodların hata vermesi
'durumunda sonraki satırdan devam etmesini
'istiyoruz, bu yüzden bu kodu ekledik.
'Amaç da şu: Eğer düzeltilecek bir şey
'yoksa formül parametre kaynaklı bir
'hata verecek, kodun çalışması yarıda
'kesilecek, gerek yok.
'--------------------------------------------------
On Error Resume Next
'--------------------------------------------------
'Döngüler için kullanılacak
'değişkenleri tanımladık.
'--------------------------------------------------
Dim i, j As Integer
'--------------------------------------------------
'Şart ifadesi için kullanacağımız bir
'kod parçası çok uzun olduğundan
'sonucunu değişkene atayıp şart
'ifadesinde bu değişkeni kullanmak
'için tanımladığımız değişken.
'--------------------------------------------------
Dim sonuc As Integer
'--------------------------------------------------
'A sütunundaki tablonun son satırını
'bul, o satıra kadar döngü çalıştır.
'--------------------------------------------------
For i = 1 To [A65536].End(xlUp).Row
'--------------------------------------------------
'Kapsayıcı döngümüz A sütunundaki listede
'her hücreyi seçecek şekilde çalışıyor.
'Önce hücre seçilecek, sonra da karakter
'kontrolü yapılacak.
'D sütununda düzeltilmesini istediğimiz
'karakterler var, bu listedeki her
'karakter için kontrol yapıyoruz.
'--------------------------------------------------
For j = 1 To [D65536].End(xlUp).Row
'--------------------------------------------------
'Eğer seçilen hücrede istenmeyen
'karakter varsa Find formülü sayı
'değeri döndürecek. Aslında bu
'karakterin bulunduğu indeks
'numarasını verecek, olmasaydı
'hata verecekti. Sayı değeri
'döndürünce anlıyoruz ki,
'değiştirilmesi gereken
'karakter var.
'--------------------------------------------------
sonuc = Application. _
WorksheetFunction. _
Find(Range("D" & j), _
Range("A" & i), 1)
'--------------------------------------------------
'Eğer sonuc değişkenine bir sayı
'atanabilmişse şart bölümü çalışacak.
'--------------------------------------------------
If IsNumeric(sonuc) Then
'--------------------------------------------------
'Substitute formülüyle hücredeki istenmeyen
'karakteri E sütununda yerine geçmesini
'istediğimiz karakterle değiştiriyoruz.
'--------------------------------------------------
Range("A" & i) = Application. _
WorksheetFunction. _
Substitute(Range("A" & i), _
Range("D" & j), _
Range("E" & j))
End If
Next
Next
End Sub