KTF – UDF – Filtre Uygulanmis Degerler Uzerinde Mukerrer Degerleri Cikartma ve Siralama

Yardim isteyen uyelerimiz icin ve genel excel kullanicisi icin mukerrer olmayan degere ulasmanin cok onemli oldugunu bilmekteyiz, bu nedenle daha onceki paylasimlarimizda bir kac tane mukerrer deger calismasi yapmistik ve gelen istekler uzerine bunlari cogaltmaya devam etmekteyiz.

Bu ornegimizde istenilen bir tabloda filtre islemi gerceklestirildikten sonra mukerrer olmayan degerlerin bulunmasi ve bunlarin alfabetik olarak siralanmasi. Mukerrer olmayan degerleri disariya cikartma ve kullanici tanimli fonksiyonla bu islemi yapabilme uzerine ornekler cozecegiz.

Yukaridaki tablomuz uzerinden yola cikarsak calismalarimizin sonuclari yukaridaki sekilde olacaktir. Oncelikli olarak siralama yapmayan fakat mukerrer degerleri cikartan bir dizi formulu ornegi verecegim.

=IFERROR(INDEX(mukerrer_sirala[Ad],MATCH(0,(IF(SUBTOTAL(3, OFFSET(mukerrer_sirala[Ad], MATCH(ROW(mukerrer_sirala[Ad]), ROW(mukerrer_sirala[Ad]))-1, 0, 1)), MATCH(ROW(mukerrer_sirala[Ad]), ROW(mukerrer_sirala[Ad])),””))*COUNTIF($B$14:B14,mukerrer_sirala[Ad]),0)),””)

Fonksiyonlu ornegimizi ornek dosyayi indirerek incelemenizi oneririm.

Kullanici Tanimli Fonksiyon ornegimize gelecek olursak;

 

Function siralanmis_mukerrer(aralik As Range)
Dim ucoll As New Collection, Value As Variant, temp() As Variant
Dim Satirlar As Single, i As Single
ReDim temp(0)
On Error Resume Next
For Each Value In aralik
    If Len(Value) > 0 And Value.EntireRow.Hidden = False Then
        ucoll.Add Value, CStr(Value)
    End If
Next Value
On Error GoTo 0
For Each Value In ucoll
    temp(UBound(temp)) = Value
    ReDim Preserve temp(UBound(temp) + 1)
Next Value
ReDim Preserve temp(UBound(temp) - 1)
Satirlar = Range(Application.Caller.Address).Rows.Count
Secim_siralamasi temp
For i = UBound(temp) To Satirlar
  ReDim Preserve temp(UBound(temp) + 1)
  temp(UBound(temp)) = ""
Next i
siralanmis_mukerrer = Application.Transpose(temp)
End Function

Function Secim_siralamasi(TempArray As Variant)
Dim MaxVal As Variant
Dim MaxIndex As Integer
Dim i, j As Integer
For i = UBound(TempArray) To 0 Step -1
    MaxVal = TempArray(i)
    MaxIndex = i
    For j = 0 To i
        If TempArray(j) > MaxVal Then
            MaxVal = TempArray(j)
            MaxIndex = j
        End If
    Next j
    If MaxIndex < i Then
        TempArray(MaxIndex) = TempArray(i)
        TempArray(i) = MaxVal
    End If
Next i
End Function

Cok detayli anlatimlara girmedim hem fonksiyon hem kod uygulamasi icin cunku konu hakkinda daha onceden yaptigimiz calismalar da var herhangi biri ihtiyacinizi karsilamiyorsa eger, konuyla ilgili daha genis bir aciklama yaparim, hangi ornekleri inceleyebileceginizi onereyim;

Mukerrer Degerleri Cikartma

Mukerrerleri Boyama

KTF – UDF – Mukerrer Olmayan Degerleri Birlestirme

KTF – UDF – Mukerrer Olmayanlari Suz – Case Sensitive

Listbox`larla Suzme Islemi

Filtre Uygulanmis Degerler Uzerinde Mukerrer Degerleri Cikartma ve Siralama

Yazar: mmustafaaslan

2004 yilindan itibaren ozel bir sirketin finans departmaninda calismaktadir. Kendini excel, visual basic kullaniminda gelistirmis olan yazarimiz; Meslegi geregi SAP konusunda ileri derecede bilgilidir.

“KTF – UDF – Filtre Uygulanmis Degerler Uzerinde Mukerrer Degerleri Cikartma ve Siralama” için 10 yorum

  1. dosyada ilk satırda saymış. Ama ikinci satırda ve sonrasında doğru sonuç vermedi.
    Birde alt satırlara kopyaladığımda hata veriyor.
    İstediğim tam olarak buydu.
    Dosyada belirtiyorum.

    1. mesela çıkarma değilde filitreleme yaptıktan sonra
      =F5 deyip alta doğru çeksem hücreyi o zaman filitreli sayıları veriyor.
      bunu en kısa formülden nasıl yaparım.
      örnekte uygulayayım.

  2. Omer Bey isteklerinizi ayri bir soru gonderme formu ile guncelleyiniz lutfen, konuyu daha sonra incelemek isteyen arkadaslar konuyla alakasiz dosyalar indirmek zorunda kalacaklar, iyi calismalar.

Bir Cevap Yazın

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


4 + 1 =