EXCEL VBA'DA AUTO FİLTER [OTOMATİK FİLTRE]

 

Excel VBA Otomatik Filtre

VBA AutoFilter, verileri çeşitli ölçütlere ve koşullara göre filtrelememize yardımcı olan bir özelliktir. Çeşitli ölçütlere göre filtrelenmesi gereken bir veri kümemiz varsa, Veri şeridindeki Filtre seçeneğini kullanabiliriz.

Benzer şekilde, VBA'da veriler üzerinde çeşitli filtrelemeler yapmak için bir otomatik filtremiz var. Bu makalede, VBA otomatik filtresinde yer alan tüm süreci ele alacağız.


ÖNEMLİ NOTLAR

  • VBA Otomatik Filtre, çalışma sayfasındaki Filtre seçeneğine benzer şekilde çalışır.
  • Verilen sütun numarasından itibaren verileri filtreler.
  • Operatör argümanını kullanarak tek bir sütundan birden fazla değeri filtreleyebiliriz.
  • Ayrıca hem metin değerlerini hem de sayısal değerleri filtreleyebiliriz.
  • AutoFilterMode'u kullanarak otomatik filtrenin durumunu kontrol edebiliriz.
  • VBA Otomatik Filtreleme, verilen sütun numarası veri aralığında değilse “Aralık sınıfının Otomatik Filtreleme yöntemi başarısız oldu” hatasını verecektir.

AutoFilter Fonksiyonunun Sözdizimi

Otomatik Filtre fonksiyonunun sözdizimi aşağıdadır.

    Range(“Data Range”).AutoFilter( [Field] , [Criteria1] , [Operator] , [Criteria2] , [VisibleDropDown])

    Range(“Date Range”): İlk olarak, RANGE nesnesini kullanarak filtreyi uygulamak için veri aralığını sağlamamız gerekiyor.

[Field]: [İsteğe Bağlı Argüman] Bu argümanda, Excel VBA'da Otomatik Filtre uygulayacağımız sütun numarasını sağlamamız gerekir. Sütun numarası, veri aralığının sol tarafından sayılmalıdır.

[Kriter1]: [İsteğe Bağlı Argüman] Verilen sütun numarasında, çift tırnak içinde filtreleyeceğimiz değeri belirteceğiz.

[Operatör]: [İsteğe Bağlı Argüman] [Kriter2]'yi kullanacaksak bu operatör argümanını kullanmamız gerekir. Operatör sembollerini kullanarak kriter 1 ve kriter 2'yi birleştirebiliriz. Operatör argümanında kullanılabilen operatörler şunlardır:

xlVe, xlOr, xlAlt10Öğe, xlÜst10Öğe, xlAlt10Yüzde, xlÜst10Yüzde, xlFilterHücreRengi, xlFilterDinamik, xlFilterYazı TipiRengi, xlFilterSimgesi, xlFilterDeğerleri

[Kriter2]: [İsteğe Bağlı Argüman] Bu, kriter1 ile birlikte verileri filtrelediğimiz ikinci kriterdir.

[VisibleDropDown]: [İsteğe Bağlı Argüman] Otomatik filtre fonksiyonunun bu argümanını kullanarak, filtre açılır seçeneğinin filtreleme sütununda görünür olup olmayacağını belirtebiliriz. TRUE veya FALSE'ı belirtebiliriz.

Tüm argümanlar isteğe bağlı olduğundan, argümanları belirtmezsek, yalnızca filtre simgelerini uygulayacaktır (eğer filtre simgeleri zaten varsa, o simgeleri kaldıracaktır).

Eğer filtre daha önceden bazı sütunlara uygulanmışsa, verilen aralıktaki tüm filtreler kaldırılacak ve tüm veriler gösterilecektir.

VBA AutoFilter Kullanılarak Filtre Nasıl Uygulanır ?

VBA Otomatik Filtre uygulamasının bazı örneklerine bakalım.

Örnek 1 – Otomatik Filtre Kullanarak Verileri Filtreleme

Örneğin, VBA otomatik filtresinin tüm örneklerinde kullanacağımız aşağıdaki verilere bakalım.

Veri aralığı A1'den G101'e kadardır ve veri tablosunda 7 sütun bulunmaktadır.

Sadece Online satış kanalına ait verileri Satış Kanalı'nda filtrelememiz gerektiğini varsayalım .

Adım 1 – Alt prosedürde RANGE nesnesini girin ve veri aralığını çift tırnak içinde A1:G101 şeklinde belirtin.

VBA Otomatik Filtre Örneği 1 - Adım 1

Adım 2 – Aralık sağlandıktan sonra noktayı girin ve IntelliSense listesinden Otomatik Filtre seçeneğini seçin.

VBA Otomatik Filtre Örneği 1 - Adım 2

Adım 3 – VBA Otomatik Filtre seçeneğini seçtikten sonra otomatik filtre fonksiyonunun aşağıdaki argümanlarını görebiliriz.

VBA Otomatik Filtre Örneği 1 - Adım 3

Adım 4 – VBA otomatik filtre fonksiyonunun ilk argümanı Alan'dır , yani filtreyi hangi sütuna uygulamamız gerekiyor?

Filtreyi Satış Kanalı sütununa uyguladığımız için sütun numarası 3 olacaktır çünkü A1:G101 veri aralığında satış kanalı sütunu 3. sırada yer almaktadır.

VBA Otomatik Filtre Örneği 1 - Adım 4

Adım 5 – Sonra, verilen sütundan hangi değeri filtreleyeceğimizi belirtmemiz gerekiyor. Daha önce belirtildiği gibi, yalnızca Çevrimiçi satış kanalını filtreleyeceğiz. Bu nedenle, Kriter1 argümanı için kriteri çift tırnak içinde Çevrimiçi olarak verin.

VBA Otomatik Filtre Örneği 1 - Adım 5

Kodu çalıştırdığımızda aşağıdaki gibi filtrelenmiş verileri göreceğiz:

VBA Otomatik Filtre Örneği 1 - Çıktı

Görüldüğü gibi filtreyi satış kanalı sütununa uygulamış durumdayız ve veri aralığında sadece Online satış kanalını görebiliyoruz.

Örnek 2 – AutoFilter'daki Operatör

Artık VBA'da Otomatik Filtre'nin nasıl uygulanacağını biliyoruz. VBA Otomatik Filtresi için diğer argümanları daha fazla inceleyelim.

Örneğin, şimdi verileri Öğe Türüne göre filtrelememiz gerektiğini varsayalım.

VBA Otomatik Filtre Örneği 2

Adım 1 – Ev ve Sebzeler öğe türlerini filtrelememiz gerektiğini varsayalım . Bu iki filtreleme değerini kriter 1'in kendisinde sağlayamayız. Bu nedenle, birden fazla öğeyi filtrelemek için operatör simgesini kullanmamız gerekir.

Alan numarası 2 olacaktır çünkü öğe türü verilen veri aralığındaki 2. sütundur .

VBA Otomatik Filtre Örneği 2 alanlı sayı

Adım 2 – Criteria1 argümanında filtreleme değerini Hanehalkı olarak belirtin .

VBA Otomatik Filtre Örneği 2 - kriter1

Adım 3 – Aynı sütundaki bir değeri daha filtreleyeceğimiz için operatör argüman girişini kullanacağız.

VBA'da bulunan operatör sabitlerine argüman adı Operatörünü girin, ardından iki nokta üst üste (:) ve eşittir işareti (=) ekleyin.

VBA Otomatik Filtre Örneği 2-argüman adı

Operatör argümanı ile çeşitli operatör sabitlerimiz var ve gereksinime göre bunlardan herhangi birini seçebiliriz.

Adım 4 – İki değeri filtreleyeceğimiz için xlOr operatör sembolünü seçeceğiz .

VBA Otomatik Filtre Örneği 2 - xlOr

Adım 5 – Sonra, Criteria2 argümanı için girdiyi Vegetables olarak sağlayabiliriz .

VBA Otomatik Filtre Örneği 2 - kriter2

Adım 6 – Kodu çalıştıralım, Item Type sütunundaki verilen değerleri filtrelemeli .

VBA Otomatik Filtre Örneği 2 - Çıktı

Öğe Türü sütunundan yalnızca Ev ve Sebze değerleri filtrelendi .

Örnek 3 – AutoFilter Kullanarak Sayıları Filtrele

Sadece metin değerleri değil, VBA'daki VBA Otomatik Filtreleme işlevini kullanarak sayıları da filtreleyebiliriz. Örneğin, önceki 2 örnekteki aynı verilerle çalışalım.

Adım 1 – Verileri, kar değerinin <10000 olduğu kar sütununa göre filtrelememiz gerektiğini varsayalım. Alanda, argüman sütunu 7 olarak sağlar çünkü Kar, veri aralığındaki 7. sütun numarasıdır.

VBA Otomatik Filtre Örneği 3

Adım 2 – Ardından Kriter 1 için koşulu <10000 olarak belirtin .

VBA Otomatik Filtre Örneği 3 - Criteria1

Sub Example2_Auto_Filter()

Range("A1:G101").AutoFilter Field:=7, Criteria1:="<10000"

End Sub

Bu, değerlerin 10000'den az olduğu kar değerine göre verileri filtreleyecektir.

VBA Otomatik Filtre Örneği 3 - kar değeri

Adım 3 – Benzer şekilde 10000 ile 30000 arasındaki değerleri filtrelemek için aşağıdaki görseldeki gibi kodu yazabiliriz.

VBA Otomatik Filtre Örneği 3 - Otomatik Filtre Kodu

Bu, 10000 ile 30000 arasındaki kar değerlerini filtreleyecektir.

VBA Otomatik Filtre Örneği 3 - Çıktı

Örnek 4 – AutoFilter Kullanarak Farklı Sütunlardan Filtreleme

Değerleri birden fazla sütuna göre de filtreleyebiliriz. Örneğin, Meyve ve Sebzeler için Çevrimiçi satışları filtrelememiz gerektiğini varsayalım . Ardından, kodu aşağıdaki şekilde yazabiliriz.

VBA Otomatik Filtre Örneği 4

Dim Rng  As Range

Öncelikle değişkeni tanımladık ve veri tipi olarak aralık nesnesini atadık.

Set Rng = Range(“A1:G101”)

RANGE bir nesne veri tipi olduğundan, VBA SET ifadesini kullandık ve Rng değişkenine hücre aralığını atadık.

With Rng

        .AutoFilter Field:=3, Criteria1:=”Online”

        .AutoFilter Field:=2, Criteria1:=”Fruits”, Operator:=xlOr, Criteria2:=”Vegetables”

End With

Birden fazla sütun için filtre uygulamamız gerektiğinden WITH ifadesini kullanırız. İlk VBA Otomatik Filtresinde, 3. ( Satış Kanalı) sütunu için ölçütü Çevrimiçi olarak atadık. Sonra, ikinci Otomatik Filtre için, 2. sütun (Ürün Türü) için filtreyi Meyveler VEYA Sebzeler olarak atadık .

Bu, Satış Kanalı ve Ürün Türü sütunları için filtreyi uygulayacak ve verilen kriter değerlerini filtreleyecektir.

VBA Otomatik Filtre Örneği 4 - Çıktı

VBA Kullanarak Excel Otomatik Filtrelemeyi AÇMA/KAPAMA

VBA Otomatik Filtreleme işlevinde, tüm argümanlar isteğe bağlıdır. Argümanın girdilerinden hiçbiri sağlanmazsa ne olacağını merak etmeliyiz.

Örneğin aşağıdaki koda bakalım.

Sub Auto_Filter()

Range("A1:G101").AutoFilter

End Sub

VBA Otomatik Filtresi için herhangi bir argüman girdisi vermedik. Ve hiçbir filtre uygulanmadı.

Referans olması açısından, aşağıdaki görüntü, kodu çalıştırmadan önce verilerin nasıl göründüğünü göstermektedir.

VBA Otomatik Filtre Açma-Kapama

Kodu çalıştıralım ve ne olacağını görelim.

VBA Otomatik Filtre Açık-Kapalı - Çıktı

Verilen veri aralığının tüm sütunlarına filtre simgeleri uygulandı.

Şimdi sütunlara bazı filtreler uygulayacağız.

VBA Otomatik Filtre Açık-Kapalı - filtre uygulandı

Şimdi kodu çalıştıralım ve ne olacağını görelim.

VBA Otomatik Filtre Açma-Kapama - kodu çalıştır

Kodu çalıştırdığımızda, tüm sütunlardaki filtre simgeleri de dahil olmak üzere tüm filtreleri kaldırdı. Bu nedenle, filtreleri açmak veya kapatmak için herhangi bir argüman olmadan VBA Otomatik Filtre işlevini kullanabiliriz.

Otomatik Filtrenin Zaten Uygulanıp Uygulanmadığını Kontrol Edin

VBA Otomatik Filtresi'ni açıp kapatmamız gerektiğinde, Otomatik Filtre'nin zaten uygulanıp uygulanmadığını kontrol etmek önemlidir. Bu, Otomatik Filtre modu seçeneği kullanılarak yapılır.

Aşağıdaki kod, etkin sayfada Otomatik Filtre'nin çalışıp çalışmadığını kontrol edecektir.

Sub Check_Auto_Filter()

If ActiveSheet.AutoFilterMode = True Then
    MsgBox "Auto Filter is already running"
Else
    MsgBox "No auto fitlers are running"
End If

End Sub

Yukarıdaki kod, Otomatik Filtre zaten açıksa Otomatik Filtre zaten çalışıyor mesajını döndürecektir .

VBA Otomatik Filtre kontrolü - zaten çalışıyor

Eğer hiçbir VBA Otomatik Filtre çalışmıyorsa, o zaman şu mesaj kutusu döndürülür: Hiçbir otomatik filtre çalışmıyor .

VBA Otomatik Filtre kontrolü - çalışmıyor

Dikkat Edilmesi Gereken Önemli Noktalar

  • VBA Otomatik filtrede, tüm argümanlar isteğe bağlıdır. Argümanlardan hiçbirini girmezsek, çalışmıyorsa verilen aralıktaki otomatik filtreyi açar veya çalışıyorsa otomatik filtreyi kapatır.
  • Verileri iki veya daha fazla sütuna göre filtrelememiz gerektiğinde WITH ifadesini kullanmalıyız.
  • VBA Otomatik Filtre yalnızca Aralık nesnesini kullanan hücre aralığıyla kullanılabilir.
  • Sadece belirtilen hücre aralığındaki verileri filtreler.


1. Excel VBA'da hücre değerine göre satırları otomatik olarak nasıl filtreleyebilirsiniz?

Verileri hücre değerine göre filtrelemek için öncelikle bir ölçüt hücresi ayarlamamız gerekir. Örneğin, Avusturya ülkesi için verileri filtrelemek istiyorsak , ölçüt hücresini aşağıdaki resimde gösterildiği gibi ayarlayın.

VBA Otomatik Filtre SSS 1 - Avusturya

Daha sonra kriter olarak hücre adresini J2 olarak verelim.

VBA Otomatik Filtre SSS 1 - Hücre Adresi

Artık veriler J2 hücre değerine göre filtrelenecektir.

2. Excel VBA'da Otomatik Filtre Neden Çalışmıyor?

Otomatik Filtre genellikle verilen sütun numarası veri aralığı içinde değilse bir hata verir. Örneğin, aşağıdaki verilerde 6 sütunumuz var.

VBA Otomatik Filtre SSS 2 - veri

Eğer alan argümanını 7 olarak verirsek, o zaman aşağıdaki hatayı alırız.

VBA Otomatik Filtre SSS 2 - Çalışma zamanı hatası

Yani verdiğimiz sütun numaralarının verilen veri aralığının sütun sayısı içerisinde olması gerekmektedir.

3. Excel VBA'da tüm Otomatik Filtreler nasıl temizlenir?

Tüm otomatik filtreleri temizlemek için, öncelikle Otomatik Filtrenin açık olup olmadığını kontrol etmemiz gerekir. Aşağıdaki kod, çalışma sayfasında Otomatik Filtrenin açık olup olmadığını kontrol edecektir. Açıksa, filtreyi çalışma sayfasından kaldıracaktır.

If ActiveSheet.AutoFilterMode Then
     ActiveSheet.AutoFilterMode = False
End If

4. VBA'da hücre aralığı olarak kriterlerle otomatik filtreleme nasıl yapılır?

Hücre aralığına sahip ölçütlerle Otomatik Filtreleme yapmak için öncelikle hücrelerde ölçüt değerleri ayarlamamız gerekir. Ardından, tüm ölçüt değerlerini dizi değişkenine atamak için dizi işlevini kullanmamız ve Otomatik Filtreleme işlevinin ölçüt argümanında dizinin ölçüt argümanında dizi değişken adını kullanmamız gerekir.

Yorum Gönder

DT KARİYER KPSS Dünyasına Hoş Geldiniz
Sevgili dostum nasıl yardımcı olabilirim?
Bu alana yazınız...