Filtrelemede İlgili Sütundaki Tüm Verileri Seçme

mustafa1205

Altın Üye
Katılım
23 Ekim 2010
Mesajlar
1,263
Excel Vers. ve Dili
Office 2016 / 64 Bit - Türkçe
Altın Üyelik Bitiş Tarihi
18-07-2026
Bir çalışmam var ve burda birde fazla kritere göre makro ile süzme işlemi yapmaktayım. Kullandığım kod ActiveSheet.Range("$A$1:$J$3161").AutoFilter Field:=4, Criteria1:="Adana" şeklindedir. Criteria1:="Adana" kısmını hücreden almaktadır. Veri doğrulama ile ili seçip hücreden almasını sağlıyorum. Bazen il hücresi boş kalıyor ve tüm hücredeki verileri seçmem gerekiyor. Bunu da Criteria1:="<>" kodu ile yapabiliyorum ama aralarında boş hücreler var. O yüzden bu sütunun filtrelemesinde boş ve dolu hücreler dahil hepsini seçmeyi sağlayan kodun Criteria1:=??? bu kısmı lazım. Umarım anlatabilmişimdir.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,269
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

İşin özünde aslında hücre boşsa hiç filtre uygulanmamış gibi davranmasını istiyorsunuz.

Ben hücreyi B1 olarak varsaydım. Siz kendi dosyaniza göre revize edersiniz.

C++:
If Range("B1") = "" Then
On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
Else
ActiveSheet.Range("$A$1:$J$3161").AutoFilter Field:=4, Criteria1:= Range("B1").Value
End If
 

mustafa1205

Altın Üye
Katılım
23 Ekim 2010
Mesajlar
1,263
Excel Vers. ve Dili
Office 2016 / 64 Bit - Türkçe
Altın Üyelik Bitiş Tarihi
18-07-2026
Hocam geç cevap yazabildim. Kusura bakmayın. Mobilden yazıyorum. İlk satırda dediğiniz gibi filtre uygulanmamış gibi olmasını istemiştim. Lakin özür dileyerek eksik anlattığım husus şu, bu filtremede B1 hücresine göre değer aldık. Gayet uygun. Ancak kod içerisinde ard arda B2, B3, B4, B5 hücrelerinden değer alan aynı mantıkta 5 adet filtreleme kodu olacak. Yani B1 hücresinde boş kalırsa onu filtrelemeyecek B2 ye geçecek ve devamı da bunun gibi olacak
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,269
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Örnek dosya paylaşarak yapmak istediğiniz işlemi açıklar mısınız?
 

mustafa1205

Altın Üye
Katılım
23 Ekim 2010
Mesajlar
1,263
Excel Vers. ve Dili
Office 2016 / 64 Bit - Türkçe
Altın Üyelik Bitiş Tarihi
18-07-2026
Hocam Şuan isyerinde olduğum için müsaadenizle akşam mesai dönüşü paylaşacağım muhakkak
 

mustafa1205

Altın Üye
Katılım
23 Ekim 2010
Mesajlar
1,263
Excel Vers. ve Dili
Office 2016 / 64 Bit - Türkçe
Altın Üyelik Bitiş Tarihi
18-07-2026
Korhan Hocam biraz geç oldu kusura bakmayın. Örnek dosya Ek'tedir.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,269
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

C++:
Sub Filtre()
    Dim S1 As Worksheet, S2 As Worksheet, S3 As Worksheet
    
    Set S1 = Sheets("Sayfa1")
    Set S2 = Sheets("Sayfa2")
    Set S3 = Sheets("RAPORLAMA")
    
    If S3.Range("B12").Value <> "" Then S1.Range("A:D").AutoFilter Field:=1, Criteria1:=S3.Range("B12").Value
    If S3.Range("B13").Value <> "" Then S1.Range("A:D").AutoFilter Field:=2, Criteria1:=S3.Range("B13").Value
    If S3.Range("B14").Value <> "" Then S1.Range("A:D").AutoFilter Field:=3, Criteria1:=S3.Range("B14").Value
    If S3.Range("B15").Value <> "" Then S1.Range("A:D").AutoFilter Field:=4, Criteria1:=S3.Range("B15").Value
    
    S1.Range("A1").CurrentRegion.Copy S2.Range("A1")
    If S1.FilterMode Then S1.ShowAllData

    S2.Select

    Set S1 = Nothing
    Set S2 = Nothing
    Set S3 = Nothing
End Sub
 

mustafa1205

Altın Üye
Katılım
23 Ekim 2010
Mesajlar
1,263
Excel Vers. ve Dili
Office 2016 / 64 Bit - Türkçe
Altın Üyelik Bitiş Tarihi
18-07-2026
Hocam çok güzel bir şekilde çalıştı. Çok teşekkür ederim. Emeğinize sağlık
 
Üst