Sütundaki Benzersiz Verileri Ayrı Bir Sütunda Listele - Microsoft Excel


A sütundaki tekrarlı veri içeren satırları döngü aracılığıyla inceler, benzersiz verileri B sütununa yazdırır.

Veri

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

tekrar eden veriler veri seti

Kod


Option Explicit

Sub BenzersizVerileriAyriBirSutundaListele()
    Dim i     As Long
    Dim sayac As Long
    
    sayac = 1
    
    Columns("B").Clear
    
    For i = 1 To [A1048576].End(xlUp).Row
        If WorksheetFunction.CountIf(Range("A1:A" & i), Range("A" & i)) = 1 Then
            Range("B" & sayac) = Range("A" & i)
            sayac = sayac + 1
        End If
    Next

End Sub

Kod (Açıklamalı)


Option Explicit

Sub BenzersizVerileriAyriBirSutundaListele()
    Dim i     As Long
    Dim sayac As Long
    
    '--------------------------------------------------
    'B sütunundaki ilk boş satırın
    'tespitinde kullanılacak değişken.
    '--------------------------------------------------
    sayac = 1
    
    '--------------------------------------------------
    'Benzersiz verileri listelemeden
    'önce B sütununu temizle.
    '--------------------------------------------------
    Columns("B").Clear
    
    '--------------------------------------------------
    'A sütunundaki veriler için işlem yap.
    '--------------------------------------------------
    For i = 1 To [A1048576].End(xlUp).Row
        
        '--------------------------------------------------
        'Her yeni satıra geçtikçe o satıraki
        'veri için kontrol yapmak istiyoruz.
        '
        'Bunu ilerlediğimiz alana kadar sürekli
        'kontrol ederek yapacağız. Nasıl?
        '
        'Şimdi arama şu şekilde olacak:
        'A1 hücresi verisini A1:A1 alanında,
        'A2 hücresi verisini A1:A2 alanında,
        '...
        'A345 hücresi verisini A1:A345 alanında arayacağız.
        'Bu böyle sonuncu hücreye kadar devam edecek.
        '
        'Peki bu şekilde aramanın faydası ne?
        'Öncelikle hiçbir hücreyi es geçmeden
        'kontrol etmiş oluyoruz. CountIf fonksiyonunu
        'ilerlediği hücreye kadar çalıştırıyoruz,
        'böylece daha az alanı kontrol ettiğinden
        'iş biraz daha hızlı oluyor.
        'Zaten gelinen hücrede birden fazla veri
        'tespit edilmişse daha fazla hücreye de
        'bakmaya gerek yok, değil mi?
        '
        'Bu şekilde aramanın ana faydası da şu:
        'Şimdi bir sütunda bütün verilerin birden
        'fazla kez tekrar ettiğini varsayalım.
        'Her seferinde bütün sütunu kontrol edersek
        'hep birden fazla veri çıkacak ve işimize
        'yaramayacak. Biz bu şekilde geldiğimiz
        'satıra kadar alanı kontrol ettirerek
        'bir nevi CountIf fonksiyonunu kandırmış
        'oluyoruz.
        '--------------------------------------------------
        If WorksheetFunction.CountIf(Range("A1:A" & i), Range("A" & i)) = 1 Then
            
            '--------------------------------------------------
            'sayac değişkeni ile B sütunundaki ilk boş satıra
            'ilgili değeri yazdırıyoruz. Eğer döngüde kullanılan
            'i değişkenini kullansaydık aralarda boşluklar
            'olacaktı. Bunun olmasını istemediğimiz için
            'B sütununda ayrı bir değişkenle (sayac) takip yaptık.
            '--------------------------------------------------
            Range("B" & sayac) = Range("A" & i)
            sayac = sayac + 1
        End If
    Next

End Sub

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