• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

benzersiz sıralama (listede boşluk var) tek formülle

modoste

Altın Üye
Katılım
31 Mayıs 2008
Mesajlar
3,714
Excel Vers. ve Dili
Microsoft OFFİCE Ev ve İş 2019 TR
merhaba sayın hocalarım
önceden yine bu soruyu sorduğumda listede boşluklarda varken benzersiz sıralama yaparken yardımcı bir sütun kullanıp hangi satırlarda veri bir defa geçtiyse bularak çözüme gidiliyordu

şimdiki sorum ise
A1:A10 arasında veriler var fakat A4 boş ve A7 boş diyelim.
B1 den başlamak şartıyla bu verileri benzersiz nasıl sıralarım ama tek bir formül kullanmak zorundayım bir sütunluk yerim var.
yardımınızı bekliyorum.
 
Alternatif olarak ekteki örnek dosyayı da inceyebilirsiniz.

Kullanıcı tanımlı fonksiyon ile çözüm üretilmiştir.

Kullanım şekli;

Kod:
=BENZERSIZ(Hücre_Aralığı;Sıralama_İşlemi;Kaçıncı_Benzersiz_Veri)

Uygulama;

Kod:
=BENZERSIZ(A1:A100;DOĞRU;5)

Bu formülle A1:A100 arasındaki benzersiz veriler alfabetik sıraya sokularak 5. benzersiz veri gösterilir.

Formüldeki DOĞRU yerine YANLIŞ yazarsanız veriler kendi sıralaması ile benzersiz listelenir.


Kullanılan kod;

Kod:
Option Explicit

Function BENZERSIZ(Alan As Range, Siralama As Boolean, Kacinci_Benzersiz As Long)
    Dim Dizi As Object, Veri As Variant, Liste As Variant, X As Long, Y As Long
    
    Application.Volatile True
    
    Set Dizi = CreateObject("Scripting.Dictionary")
        
    ReDim Liste(1 To 1)
    
    For Each Veri In Alan
        If Veri.Value <> "" Then
            If Not Dizi.Exists(Veri.Value) Then
                Dizi.Add Veri.Value, Nothing
                X = X + 1
                ReDim Preserve Liste(1 To X)
                Liste(X) = Veri.Value
            End If
        End If
    Next
        
    If Siralama Then
        For X = LBound(Liste) To UBound(Liste) - 1
            For Y = X + 1 To UBound(Liste)
                If StrComp(Liste(X), Liste(Y), vbTextCompare) = 1 Then
                    Veri = Liste(X)
                    Liste(X) = Liste(Y)
                    Liste(Y) = Veri
                End If
            
            Next
        Next
    End If
    
    If Kacinci_Benzersiz > UBound(Liste) Then
        BENZERSIZ = ""
    Else
        BENZERSIZ = Liste(Kacinci_Benzersiz)
    End If
End Function
 

Ekli dosyalar

sayın korhan hocam alternatifli çözüm için teşekkür ederim
yanlız benim kullanmak istediğim şöyle bir durum
A1:A50 arası diyelim veriler sayılar var arada boşluklarda var
tek bir formülle B1 den başlamak şartıyla A1:A50 arasını benzersiz sıralayabilirmiyiz
diğer benzersiz sıralama yöntemlerini kullanmaktayım sizlerden gelen eski dosyalarıma çözümlerle
 
Önerdiğim KTF yi kullanın...
 
Geri
Üst