Satırlardaki İstenmeyen Karakterleri Düzelt - Microsoft Excel


İ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.

Veri

Konu ile ilgili örnek bir veri setine aşağıdaki bağlantıdan ulaşabilirsiniz.

istenmeyen karakterler veri seti

Kod


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

Kod (Açıklamalı)


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

Etiketler
microsoft excel açıklamalı içerik microsoft excel vba