• DİKKAT

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

çoklu veri filtreleme

Katılım
26 Ocak 2010
Mesajlar
13
Excel Vers. ve Dili
2003
arkadaşlar excel2003 de excel2007 de olduğu gibi bir sutuna yukadan aşağıya yazılmış isimlerden bir den fazlasını nasıl filtreliyoruz. örneğin bir sütundki ahmet leri filtreliyor ama ben hem ahmetleri hem mehmetleri filtrelesin istiyorum. excel2007 de tik koyuyorsun oluyor 2003 de nasıl oluyo. şimdiden teşekkürler....
 
Merhaba,

Filtre bölümünden Özel seçeneğine girerek,

eşittir den ahmet
veya
eşittir den mehmet

seçerek işlemi bitirin..

.
 
teşekkürler üstad... emeğine sağlık 2 seçenekte bunu kullanmaya başladım..... peki 3 yada 4 yada daha fazla seçenek olursa yani ahmetler, mehmetler, hasanlar ve hüseyinleri beraber süz demek gerekirse nasıl olacak.....
 
2003 versiyonunda ikiden fazla filtreleme imkanınız yoktur.
 
hızlı cevabınızdan ötürü teşekkür ederim... anladım... 2007 ye geçmek lazım....
 
Selamlar,

Eğer 2007 versiyona geçiş imkanınız yoksa sorun makro ile çözümlenebilir.
 
yapılmış bir makro örneği varmı? varsa rica edebilirmiyim?.... yoksa nasıl yapabileceğimi kısaca özetlemeniz mümkün mü?
 
Eki inceleyiniz..

.
 

Ekli dosyalar

Ben de, bir form yardımıyla bir çalışma yaptım. Yorumlarınızı bekliyorum. Kısaca açıklama yapmak gerekirse, filtre uygulanmış bir sütun üzerindeyken, form açılıyor ve buradaki değerler teke düşürülerek forma ekleniyor, bu aşamada yapılan seçimler bir diziye alınarak kriter kısmına ekleniyor ve otomatik filtrelemenin özelliğinden faydalanılarak süzme gerçekleşiyor. Amacım, 2007 veriyonundaki filtreleme görünümünü taklit etmek idi, bunu da umarım başarmışımdır.
Faydası olması dileğiyle...
Kod:
Option Explicit
Dim arr() As Variant
Dim son As Long
Dim a As Long
Dim b As Long

Private Sub CommandButton2_Click()
    Dim arr2() As Variant
    Dim i As Integer
    Dim c As Integer
    Dim d As Integer
    Dim hcr As Range
    
    With ActiveSheet.AutoFilter.Range
        For Each hcr In Range(Split(.Address, ":")(0) & ":" & Split(.Address, "$")(3) & Split(.Address, "$")(4)).Cells
        d = d + 1
            If hcr.Address = ActiveCell.Address Then Exit For
        Next
    End With
    For i = 1 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) = True Then
            ReDim Preserve arr2(c)
            arr2(c) = CStr(ListBox1.List(i))
            c = c + 1
        End If
    Next i
    ActiveSheet.Range(Cells(i, b), Cells(son, b)).AutoFilter Field:=d, Criteria1:=arr2, Operator:=xlFilterValues
End Sub
'
Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Dim i As Integer
    With ListBox1
        If .List(.ListIndex) = "HEPSİNİ SEÇ" And .Selected(.ListIndex) = True Then
           .List(.ListIndex) = "HEPSİNİ KALDIR"
            For i = 1 To .ListCount - 1
                .Selected(i) = True
            Next
        ElseIf .List(.ListIndex) = "HEPSİNİ KALDIR" And .Selected(.ListIndex) = False Then
               .List(.ListIndex) = "HEPSİNİ SEÇ"
            For i = 1 To .ListCount - 1
                .Selected(i) = False
            Next
        End If
    End With
End Sub

Private Sub UserForm_Initialize()
    Dim i As Integer
    Dim c As Integer
    On Error Resume Next
    ActiveSheet.ShowAllData
    a = ActiveCell.Row
    b = ActiveCell.Column
    son = Cells(65536, b).End(3).Row
    For i = a + 1 To son
        If WorksheetFunction.CountIf(Range(Cells(i, b), Cells(son, b)), Cells(i, b)) = 1 Then
            ReDim Preserve arr(c)
            arr(0) = "HEPSİNİ SEÇ"
            c = c + 1
            ReDim Preserve arr(c)
            arr(c) = Cells(i, b)
        End If
    Next
    ListBox1.List = arr()
End Sub
 

Ekli dosyalar

2007'de gelişmiş filtre var. İstediğiniz kadar seçeneğe göre filtreleyebilirsiniz. Öncelikle sayfanın farklı bir yerine filtrenecek başlık adlarını ana tablodan kopyalayarak yazın. Ardından altına istediğiniz kriter seçeneğini yine tablodan kopyalayarak yapıştırın (sürekli ana tablodan kopyalayın diyorum çünkü karakter bile farklı olsa yanlış sonuç verir) daha sonradan veri kısmında filtrenin yanındaki gelişmiş butonuna tıklayın. Çıkan pencerede liste yazan kısma ana listenin adres aralığını tabloyu seçerek girin. Ölçüt aralığına ise manuel olarak hazırladığınız ikinci tabloyu (yani alan başlıkları ve filtreleme kriterlerinin yazılı olduğu) seçin. Şayet sonucunuzun farklı bir yere yazılmasını istiyorsanız başka bir yere kopyala seçeneğini işaretleyip yer gösterin. Ana tablo üzerinde filtreleme olsun istiyorsanız ok'e basın.
 
Sn Hamit bey dosyanızdaki kodlar hata veriyor, tekrar gözden geçirirmisiniz.
 
Levent bey, evet haklısınız, ben de dün fark ettim, araştırdım ama bulamadım. Aslında kodları, Excel 2007'de yaptığım için bunu fark edemedim. Sorun, Excel 2007 kütüphanesine ait bir özelliğin Excel 2003' de olmaması. Bunu nasıl aşarız bilmiyorum, belki siz bir fikir yürütebilirsiniz.
Hata veren satır ve hata veren kısım aşağıda. Bu kısmı çıkarttığımızda ise kod, eksik çalışıyor. Ama bu haliyle, Excel 2007'de çalışıyor, bunu da belirtmek isterim. Tabii ki soru 2003 versiyonunda nasıl olmalıydı olduğu için, bu kodların bir önemi kalmıyor çünkü zaten bu işi, Excel 2007 yapıyor. Yabancı sitelerde dün epey araştırdım ama bir çözüm bulamadım. Bu aşamaya getirdikten sonra da olmayacağını düşünmek hakikaten üzücü.
İyi çalışmalar...
Kod:
ActiveSheet.Range(Cells(i, b), Cells(son, b)).AutoFilter Field:=d, Criteria1:=arr2, [B][color=red]Operator:=xlFilterValues[/color][/B]
 
hamitcan üstad'a olmasada çalışmalarından ötürü, ömer üstad'a yaptığı filtreleme çalışmasından ötürü teşekkür ederim. harika olmuş....
 
Levent bey, evet haklısınız, ben de dün fark ettim, araştırdım ama bulamadım. Aslında kodları, Excel 2007'de yaptığım için bunu fark edemedim. Sorun, Excel 2007 kütüphanesine ait bir özelliğin Excel 2003' de olmaması. Bunu nasıl aşarız bilmiyorum, belki siz bir fikir yürütebilirsiniz.
Hata veren satır ve hata veren kısım aşağıda. Bu kısmı çıkarttığımızda ise kod, eksik çalışıyor. Ama bu haliyle, Excel 2007'de çalışıyor, bunu da belirtmek isterim. Tabii ki soru 2003 versiyonunda nasıl olmalıydı olduğu için, bu kodların bir önemi kalmıyor çünkü zaten bu işi, Excel 2007 yapıyor. Yabancı sitelerde dün epey araştırdım ama bir çözüm bulamadım. Bu aşamaya getirdikten sonra da olmayacağını düşünmek hakikaten üzücü.
İyi çalışmalar...
Kod:
ActiveSheet.Range(Cells(i, b), Cells(son, b)).AutoFilter Field:=d, Criteria1:=arr2, [B][COLOR=red]Operator:=xlFilterValues[/COLOR][/B]

Hamit bey, sizi üzmek istemezdim ama benim gördüğüm bu filtre kodlamasının 2003 için uyarlanamayacağıdır.
 
Geri
Üst