Excel VBA Filtresi, veri filtreleme sürecini otomatikleştirmenize olanak tanıyan sağlam bir araçtır. Excel'in VBA programlamasının bir bileşenidir ve farklı Excel işlemlerini programatik olarak düzenlemenize olanak tanır. Yalnızca önceden belirlenmiş standartları karşılayan bilgileri gösterecek ve sıralayacak filtreler uygulayarak büyük veri kümelerini verimli bir şekilde işleyebilirsiniz.
Excel'de VBA kullanarak metin tabanlı bir filtre uyguladığımız bir örneğe bakalım. Bu örnekteki "FilterByText" alt rutini, A1 ile D10 aralığındaki verileri VBA filtrelemek için tasarlanmıştır.

Bu aralık A'dan D'ye kadar olan sütunları ve 1'den 10'a kadar olan satırları kapsar. Bu filtre, durum bilgisi içerdiğini varsaydığımız ikinci sütun olan B Sütununa odaklanır.

Kriter1:=”Tamamlandı” kullanılarak filtre, ikinci sütunda “Tamamlandı” metni bulunan satırları özel olarak hedef alır ve böylece veri yönetimi ve incelemesi basitleştirilir.
Bu kodu çalıştırdığınızda, çalıştırıldığında yalnızca B Sütunundaki "Tamamlandı" durumu belirtilen satırları görüntüleyecek şekilde verileri filtreler.

- Veri filtreleme görevleri VBA Veri Filtresi ile etkili bir şekilde otomatikleştirilebilir.
- VBA kodunda kriterleri ve aralığı doğru tanımlamak esastır.
- Gelişmiş filtreleme seçeneklerinin yardımıyla karmaşık veri senaryoları yönetilebilir.
- Filtreleri temizleyerek verilerinizin görünümünü sıfırlamayı unutmayın.
Excel VBA Filtresi Nasıl Kullanılır?
VBA Veri Filtresini kullanmak için şu adımları izleyin:
- Excel'i açın ve VBA düzenleyicisini açmak için ALT + F11 tuşlarına basın.

- Menüde “Ekle”ye tıklayıp “Modül”ü seçerek yeni bir modül ekleyin.

- Filtreleme modülünde VBA kodunuzu yazmaya başlayın .
Örneğin, belirli ölçütlere göre bir veri aralığını filtrelemek için buna benzer bir şey yazmak için: Bu örnek, A1:B10 aralığının ilk sütununda (Alan:=1) belirtilen bir ölçüt ("Kriterleriniz") için bir filtre ayarlar. Excel VBA'daki AutoFilter işlevi, etkili bir şekilde kullanılabilmesi için sözdiziminin ve parametrelerinin anlaşılmasını gerektirir. AutoFilter Sözdizimi ve Parametreleri:
Range("A1:B10").AutoFilter Field:=1, Criteria1:="YourCriteria"
- VBA Kodunu F5 tuşuna basarak veya VB editöründe Çalıştır butonuna tıklayarak çalıştırın.
VBA Kullanarak Verileri Filtrelemeye Yönelik Örnekler
Örnek 1 – Verilere Filtre Uygula veya Filtreyi Kaldır
Diyelim ki VBA Filtre Verilerini kullanarak bazı Excel verilerine filtre uygulamak istiyorsunuz. Bunu bu örnekte nasıl başaracağımızı göreceğiz.

- Adım 1: Tedarik Veri Aralığı
Kodun ilk satırı Aralıktır (“A1:D10”). Filtrenin uygulanacağı veri aralığı bu satırda belirtilir. Bu durumda aralık A1 hücresinden D10 hücresine kadardır.
Böylece, 1'den 10'a kadar olan satırlardaki ve A'dan D'ye kadar olan sütunlardaki tüm veriler filtreye tabi olacaktır. Filtrenin düzgün çalışması için verilerinizin bu aralığın içinde olması gerekir.

- Adım 2: Otomatik Filtreleme İşlevine Erişim
“.AutoFilter” daha sonra belirtilen aralığa uygulanır. Belirtilen aralık için, kodun bu bölümü VBA'da AutoFilter özelliğini etkinleştirir .
Kullanıcı, belirlenen aralıktaki her sütun için başlık satırında bir açılır liste görüntüleyen AutoFilter yöntemini kullanarak verileri ihtiyaçlarına göre filtreleyebilir . Bu kod satırı, aralığa zaten uygulanmış olan tüm filtreleri kaldıracaktır.

- Adım 3: Filtreyi Etkinleştirmek İçin Kodu Çalıştırın
Tüm kod, “ApplyRemoveFilter()” adlı bir alt prosedüre sarılmıştır. Bu özel bir VBA alt yordamıdır. Çalıştırıldığında yukarıdaki adımlarda tanımlanan eylemler tetiklenir. Bu makroyu çalıştırdığınızda, filtrenin sütunlara uygulandığını göreceksiniz.

İşte tam kod:
Sub ApplyRemoveFilter()
Range(“A1:D10”).AutoFilter
End Sub
Örnek 2 – Belirli Değerleri Filtrele
Bu örnek, belirli bir aralıktaki verilere bir VBA filtresinin nasıl uygulanacağını ve yalnızca ilk sütundaki değerin eşleştiği satırların nasıl görüntüleneceğini gösterir.

- Adım 1: Kod Range(“A1:D20”).AutoFilter ile başlar. Bu satır filtrenin uygulanacağı A1:D20 veri aralığını belirtir.
Sütun A'dan sütun D'ye ve satır 1'den 20'ye kadar her bilgi parçasının seçildiğini gösterir. Daha sonra, bu aralıkta, filtreleme seçeneklerinin kullanılmasına izin veren AutoFilter yöntemi çağrılır.

- Adım 2: Filtre uygulanacak sütun numarası aynı satırda “Field:=1” ile belirtilir.
Bu örnekte "Field:=1", filtrenin seçilen aralığın ilk sütununa, bu durumda sütun A'ya uygulandığını gösterir. Filtreleme ölçütlerinin kullanılacağı yer burasıdır.

- Adım 3: Filtreleme kriteri, alan seçiminden sonra “Criteria1:=”SpecificValue”” kullanılarak tanımlanır. Burada, “SpecificValue” değeri ilk sütunu (Alan 1) filtrelemek için kullanılır.
Filtre uygulandıktan sonra, yalnızca A sütununun “SpecificValue” değerine sahip satırlar görüntülenecektir. Bu değer, gerektiği gibi başka bir değere değiştirilebilir.

- Adım 4: “FilterSpecificValues” alt rutini yürütüldüğünde A1:D20 aralığına bir Otomatik Filtre uygular ve yalnızca Sütun A'nın değeri “SpecificValue” olan satırları görüntüler ve diğer tüm satırları gizler.

İşte tam kod:
Sub FilterSpecificValues()
Range(“A1:D20″).AutoFilter Field:=1, Criteria1:=”SpecificValue”
End Sub
Örnek 3 – OPERATÖR Argümanının Kullanımı
Bu örnek, ikinci sütunun hem "Matematik" hem de "Politika" ifadelerini içermesiyle aynı anda iki gereksinimi karşıladığı A1:D15 aralığındaki satırları hedeflemek için VBA Filtre verilerinin kullanımını göstermektedir.

- Adım 1: Kodun ilk satırı “Range(“A1:D15″).””AutoFilter.” Bu satır, “AutoFilter”ın uygulanacağı veri aralığını belirtir, yani A1 ile D15 arasındaki hücreler. 1 ile 15 arasındaki satırlardaki ve A ile D arasındaki sütunlardaki tüm veriler aralığa dahildir.
“Field:=2” aralığın hemen ardından belirtilir. Bu, seçilen aralığın ilk alanının (veya sütununun) (bu durumda B sütunu) filtreleme ölçütlerine tabi olacağı anlamına gelir.

- Adım 2: Burada, “Criteria1:=”Math”.” tanımlıyoruz. Kodun bu bölümü, ilk alan (sütun B) için ilk filtreleme kriterini belirler. Sütun B'de değeri “Math” olan satırlar filtrelenecektir.

- Adım 3: “Operator:=xlOr” ilk kriterden sonra tanıtılır. İki kriterin nasıl etkileşime gireceğini kontrol ettiği için bu operatör çok önemlidir.
Bu durumda xlOr, filtre uygulandıktan sonra bir satırın görüntülenebilmesi için ölçütlerden birinin karşılanması gerektiği anlamına gelir.

- Adım 4: Criteria2:="Politics" sonunda ayarlanır. Bu, filtrenin ikinci gereksinimidir. Bu kriter, "xlOr" operatörü kullanılarak birinci kriterle birlikte kullanılır.

- Adım 5: FilterUsingOperator alt yordamını çalıştırdığınızda, ikinci sütundaki A1:D15 aralığına bir filtre uygulanır ve yalnızca B Sütunundaki değerlerin her ikisi de “Matematik” veya “Politika” olan satırlar gösterilir.

İşte tam kod:
Sub FilterUsingOperator()
Range(“A1:D15″).AutoFilter Field:=2, Criteria1:=”Math”, Operator:=xlOr, Criteria2:=”Politics”
End Sub
Örnek 4 – Operatör Sembolleriyle Sayıları Filtrele
Bu örnekte, 10'dan fazla ve 20'den az olan verileri filtrelemek için iki ölçüt ve bir operatöre sahip filtreleri verilere uygulamak üzere VBA Veri Filtresi'nin nasıl kullanılacağını göreceğiz.

- Adım 1: Yeni modülde ilk olarak FilterNumbers adında yeni bir alt rutin oluşturarak başlıyoruz.

- Adım 2: Bu satırda AutoFilter'ı uyguluyoruz:
Range(“A1:D10”).AutoFilter: Çalışma sayfasındaki A1 hücresinden D10 hücresine kadar olan aralık, kodun bu bölümü tarafından seçilir.
Daha sonra, bu aralığa “.AutoFilter” yöntemi kullanılarak bir filtre uygulanır. Bu, A'dan D'ye kadar olan sütunların ilk on satırındaki bilgileri filtrelediğinizi gösterir.

- Adım 3: Şimdi, İlk Alan için Filtre Kriterlerini belirtiyoruz:
Field:=3: Bu, bu aralıktaki ilk alan (veya sütun) olan Sütun C'nin filtrenin uygulanacağı yer olduğunu gösterir.
Criterial:=”>10″: Bu, filtrenin başlangıç kriterini belirler. Excel'e yalnızca Sütun C'deki değer 10'u aştığında satırları görüntülemesi talimatı verilir.

- Adım 4: Burada iki kriteri birleştirmek için bir Operatör kullanacağız.
Operator:=xlAnd: Bu operatör kullanılarak iki ölçüt birleştirilir. Bu, bir satırın görüntülenmesi için her iki gereksinimin de karşılanması gerektiğini belirtir.

- Adım 5: Bu adımda ikinci filtre kriterini belirliyoruz.
Criteria2:=”<20″: Bu, filtrenin ikinci gereksinimini belirler. Excel'e görünür satırları, Sütun A'nın değeri de 20'den az olanlarla sınırlamasını söyler.

- Adım 6: Bu kodu çalıştırdığınızda, C Sütununun gerekli kriterlerimizle filtrelendiğini ve yalnızca gereksinimlerimizi karşılayan alanların doldurulduğunu göreceksiniz.

İşte tam kod:
Sub FiltreNumbers()
Range(“A1:C10″).AutoFilter Field:=3, Criteria1:=”>10″, Operator:=xlAnd, Criteria2:=”<20″
End Sub
Örnek 5 – Birden Fazla Sütun İçin Filtre Uygula
Bu örnek, A1:D20 aralığındaki iki ayrı sütuna VBA filtre verilerinin nasıl uygulanacağını gösterecek ve “East”in A Sütununda ve “Jones”un B Sütununda göründüğü satırları görüntüleyecektir.

- Adım 1: FilterMultipleColumns adında yeni bir VBA alt rutini oluşturarak başlayın.

- Adım 2: Bu satırda, İlk Alana Otomatik Filtreyi uyguluyoruz:
Range(“A1:D20”): Çalışma sayfasında A1 hücresinden D20 hücresine kadar olan veri aralığını seçin.
.AutoFilter: AutoFilter yöntemini seçili aralığa uygular.
Field:=1: Filtrenin ilk alana (bu durumda Sütun A) uygulanması gerektiğini belirtir.
Criteria1:=”Doğu”: Sütun A için filtre koşulunu yalnızca değeri “Doğu” olan satırları görüntüleyecek şekilde ayarlar.

- Adım 3: Şimdi İkinci Alana Otomatik Filtreyi uygulayalım:
“Range(“A1:D20”).AutoFilter Field:=2, Criteria1:=”Jones””: Bu satır, farklı bir sütun için benzer bir işlemi tekrarlar:
Tekrar aynı aralığı (A1:D20) seçer.
Field:=2: Filtrenin şu anda ikinci alana, yani Sütun B'ye uygulandığını gösterir.
Criteria1:=”Jones”: Sütun B için filtre koşulunu yalnızca değeri “Jones” olan satırları gösterecek şekilde ayarlar.

- Adım 4: Modülü kaydedin ve kodu çalıştırın. Bu kod çalıştığında, öncelikle A1:D20 aralığındaki Sütun A'daki verileri filtreleyerek yalnızca değerin "Doğu" olduğu satırları gösterir.
Aynı aralıktaki B Sütununa anında ikinci bir filtre uygular ve satır sayısını "Jones" değerine sahip olanlarla sınırlar. Sonuç olarak, yalnızca her iki gereksinimi de karşılayan satırlar gösterilir.

İşte tam kod:
Sub FiltreÇokluSütunlar()
Range(“A1:D20″).AutoFilter Field:=1, Criteria1:=”Doğu”
Range(“A1:D20″).AutoFilter Field:=2, Criteria1:=”Jones”
End Sub
Dikkat Edilmesi Gereken Önemli Noktalar
- VBA filtreleme verileri hücre değerine göre filtrelendiğinde, filtreleme için kullanılan hücredeki veri türünün filtrelenen sütundaki veri türüyle eşleşmesi sağlanır.
- VBA verilerini filtrelemek ve başka bir sayfaya kopyalamak için, yalnızca görünür, filtrelenmiş verilerin aktarıldığından emin olmak için kopyalamadan önce “Range.SpecialCells(xlCellTypeVisible)” kullanarak filtrelenmiş aralığı doğru bir şekilde seçmek önemlidir.
- Açılır liste seçimine dayalı VBA filtre verileri, filtreleme eyleminin açılır liste değişikliklerine dinamik olarak yanıt vermesini sağlar; bu genellikle “Worksheet_Change” olayını kullanır.
- VBA filtre verilerini kullanırken kodunuzun farklı veri aralıklarına uyum sağlayabildiğinden ve manuel ayarlamalar gerektirmeden verilerin boyutunda veya yapısında meydana gelen değişiklikleri işleyebildiğinden emin olun.
Excel VBA'da "gelişmiş veri filtreleme", birden fazla ölçüt uygulama, karmaşık mantıksal operatörler veya birden fazla sayfada filtreleme gibi basit filtrelemenin ötesine geçen filtreleme yöntemlerini ifade eder.
Excel VBA’da veri aralığını seçin ve otomatik filtrelemeyi etkinleştirmek için ilgili alan ve ölçüt parametreleriyle “.AutoFilter” yöntemini kullanın.
İstenilen aralıkta “.AdvancedFilter” metodunu ve Excel VBA’da “Unique:=True” parametresini kullanarak yinelenen verileri filtreleyebilirsiniz.
Excel VBA'da, filtrenin herhangi bir parametre olmadan uygulandığı aralığa “.AutoFilter” yöntemini uygulayarak filtrenin seçimini kaldırın.
