Excel VBA: Dizide Birden Çok Ölçütle Filtreleme (7 Yol)

  • Bunu Paylaş
Hugh West

Aşağıdakileri yapmanın yollarını arıyorsanız filtre Excel'de birden çok ölçüt dizisi ile VBA Büyük bir veri kümesini birden fazla kritere göre filtrelemek, aşağıdaki araçların yardımıyla daha kolay hale getirilebilir VBA Excel'in geleneksel özelliğini kullanmak yerine kodlar.

Öyleyse, ana makalemize başlayalım.

Çalışma Kitabını İndirin

Çoklu Kriterlerle Filtreleme.xlsm

Excel VBA Kullanarak Dizide Birden Çok Ölçütle Filtreleme Yapmanın 7 Yolu

Aşağıdaki veri kümesinde, öğrencilerin adlarına ve kimliklerine karşılık gelen bazı not kayıtlarımız var. Bu veri kümesini bazı kodlar kullanarak bir dizi olarak farklı kriterlere göre filtrelemeye çalışacağız.

Biz kullandık Microsoft Excel 365 sürümünü burada bulabilirsiniz, uygunluğunuza göre diğer sürümleri kullanabilirsiniz.

Yöntem-1: Dizideki Metinler Olarak Çoklu Kriterlerle Filtreleme

Burada, aşağıdaki veri kümesini aşağıdakilere göre filtrelemeye çalışacağız Öğrenci Adı dizelerini içeren birden çok ölçüt için sütun Emily , Daniel ve Gabriel bir dizi içinde.

Adım-01 :

➤ Şuraya gidin Geliştirici Tab>> Visual Basic Opsiyonel.

O zaman Visual Basic Düzenleyicisi açılacak.

➤ Şuraya gidin Ekleme Tab>> Modül Opsiyonel.

Bundan sonra, bir Modül oluşturulacaktır.

Adım-02 :

➤ Aşağıdaki kodu yazın

 Sub filter_with_array_as_criteria_1() ActiveSheet.Range("B3:D3").AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Array("Emily", "Daniel", "Gabriel") End Sub 

Burada, başlık adlarını şu aralıkta bildirdik B3:D3 filtreyi uygulayacağımız ve Alan:=2 bu filtreleme işlemini yapacağımız bu aralığın sütun numarasıdır.

Son olarak, birden fazla öğrencinin adını bildirmek için kriterleri bir dizi olarak ayarladık, örneğin Emily , Daniel ve Gabriel .

➤ Basın F5 .

Ardından, veri kümesini birden çok ölçüt için filtreleyerek öğrencilerin adlarını ve bunlara karşılık gelen Kimlikler ve Marks öğrenciler için Emily , Daniel ve Gabriel .

Daha fazlasını okuyun: Excel'de Birden Çok Ölçütü Filtreleme (4 Uygun Yol)

Yöntem-2: Excel VBA Kullanarak Dizide Birden Çok Sayı Ölçütü ile Filtreleme

Burada, kimlikler için aşağıdaki veri kümesini filtreleyeceğiz 101135 , 101137 ve 101138 Bu sayıları bir dizide çoklu ölçüt olarak kullanarak.

Adımlar :

Takip et Adım-01 . Yöntem-1 .

➤ Aşağıdaki kodu yazın

 Sub filter_with_array_as_criteria_2() ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=Array("101135", "101137", "101138") End Sub 

Burada, başlık adlarını şu aralıkta bildirdik B3:D3 filtreyi uygulayacağımız ve Alan:=2 bu filtreleme işlemini yapacağımız bu aralığın sütun numarasıdır.

Son olarak, birden fazla öğrencinin kimliğini bildirmek için kriterleri bir dizi olarak ayarladık, örneğin 101135 , 101137 ve 101138 ve bunları dizeler olarak belirtmek için ters virgüllerin içine koyduk çünkü Otomatik Filtre yalnızca dizelerden oluşan bir dizi için çalışacaktır.

➤ Basın F5 .

Bundan sonra, kimlikleri olan öğrencilerin adlarını ve notlarını alacaksınız 101135 , 101137 ve 101138 .

Daha fazlasını okuyun: Excel'de Sütundan Diziye Benzersiz Değerler Almak için VBA (3 Kriter)

Yöntem-3: Dizi Olarak Kullanmak İçin Bir Aralıkta Birden Fazla Kriter Ayarlama

Burada, aşağıdaki kriterleri listeledik Liste kimlikleri içeren sütun 101134 , 101135 ve 101136 filtreleme işlemimizi buna göre yapacağız.

Adımlar :

Takip et Adım-01 . Yöntem-1 .

➤ Aşağıdaki kodu yazın

 Sub filter_with_array_as_criteria_3() Dim ID_range, k As Variant ID_range = Application.Transpose(ActiveSheet.Range("F4:F6")) For k = LBound(ID_range) To UBound(ID_range) ID_range(k) = CStr(ID_range(k)) Next k ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=ID_range End Sub 

Burada şunu beyan ettik ID_range , k olarak Varyant ve ID_range birden fazla kriteri saklayacak dizidir ve k bu dizinin alt sınırından üst sınırına kadar olan artıştır. Alt sınıra ve üst sınıra sahip olmak için LBOUND işlevi ve UBOUND işlevi sırasıyla.

Bu FOR döngüsü yardımıyla dizi içerisindeki string dışındaki değerleri stringe dönüştürmek için kullanılır. CStr işlevi Son olarak, bu diziyi Kriterler1 .

➤ Basın F5 .

Daha sonra, kimlikleri olan öğrencilerin adlarını ve notlarını alacaksınız 101134 , 101135 ve 101136 .

Daha fazlasını okuyun: Excel VBA'da Farklı Sütunları Birden Çok Kritere Göre Filtreleme

Benzer Okumalar

  • Excel'de Benzersiz Değerler Nasıl Filtrelenir (8 Kolay Yol)
  • Excel'de Özel Filtre Gerçekleştirin (5 Yol)
  • VBA ile Bir Dizinin Ortalamasını Hesaplama (Makro, UDF ve UserForm)
  • Excel Filtresi için Kısayol (Örneklerle 3 Hızlı Kullanım)

Yöntem-4: Çoklu Kriterlerle Dizi Oluşturmak için SPLIT ve JOIN Fonksiyonlarını Kullanma

Burada, aşağıdaki listeyi kullanacağız Liste sütununu bir dizi olarak kullanacağız ve veri kümesini düzgün bir şekilde filtrelemek için SPLIT işlevi , JOIN işlevi ve TRANSPOSE işlevi bir VBA Kod.

Adımlar :

Takip et Adım-01 . Yöntem-1 .

➤ Aşağıdaki kodu yazın

 Sub filter_with_array_as_criteria_4() ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=Split(Join(Application.Transpose(Range("F4:F6")), ","), ",") End Sub 

İşte, TRANSPOSE dönüştürür 2D dizisini bir 1D aksi takdirde dizi Otomatik Filtre işe yaramayacak, BİRLEŞİN değerlerin her birini dizelerden oluşan bir dizide birleştirecek ve son olarak BÖL veri kümesini filtrelemek için ölçüt olarak ayrı ayrı girdi vermek üzere her dizeyi parçalayacaktır.

➤ Basın F5 .

Son olarak, kimlikleri olan öğrencilerin adlarını ve notlarını alacaksınız 101134 , 101135 ve 101136 .

Daha fazlasını okuyun: VBA'da Bir Dizeyi Bir Diziye Bölme (3 Yol)

Yöntem-5: VBA ile Dizi için Döngüde Birden Çok Ölçütle Filtreleme

Bu bölümde, aşağıdaki veri kümesini aşağıdaki kriterlere göre filtreleyeceğiz Öğrenci Kimliği sütununda listelenen birden fazla kriter için Liste sütun.

Adımlar :

Takip et Adım-01 . Yöntem-1 .

➤ Aşağıdaki kodu yazın

 Sub filter_with_array_as_criteria_5() Dim k As Integer Dim ID_range(100) As String For k = 4 To 6 ID_range(k) = ActiveSheet.Range("F" & k) Next k ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=ID_range End Sub 

Burada şunu beyan ettik k olarak Tamsayı , ID_range(100) olarak String nerede ID_range 'ye kadar saklayacak bir dizidir. 100 Bu dizinin değerlerini belirlemek için burada FOR döngüsü için k gelen 4 için 6 satır numaraları olarak Liste sütunu ve F sütun adıdır.

Son olarak, bu diziyi Kriterler1 için Otomatik Filtre .

➤ Basın F5 .

Sonunda, kimlikleri olan öğrencilerin adlarını ve notlarını alacaksınız 101134 , 101135 ve 101136 .

Daha fazlasını okuyun: Excel'de VBA ile Birden Çok Kriteri Filtreleme (Hem AND Hem OR Türleri)

Yöntem-6: Birden Fazla Kriter için Adlandırılmış Aralık Kullanma

Burada, programda yer alan bazı öğrencilerin isimlerini listeledik Liste sütununa ekledik ve bu aralığı Öğrenci Bu adlandırılmış aralığı kullanarak, aşağıdakiler için birden fazla kriter içerecek bir dizi tanımlayacağız Otomatik Filtre özellik.

Adımlar :

Takip et Adım-01 . Yöntem-1 .

➤ Aşağıdaki kodu yazın

 Sub filter_with_array_as_criteria_6() Dim Student_range, k As Variant Student_range = Application.Transpose(ActiveSheet.Range("Student")) ActiveSheet.Range("B3:D3").AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Student_range End Sub 

Burada şunu beyan ettik Student_range , k olarak Varyant 'yi kullandı ve TRANSPOSE işlevi dönüştürmek için 2D adlandırılmış aralığın dizisi Öğrenci bir 1D dizisine yerleştirdikten sonra Student_range olarak kullanılır. Kriterler1 için Otomatik Filtre yöntem.

➤ Basın F5 .

Ardından, veri kümesini birden çok ölçüt için filtreleyerek öğrencilerin adlarını ve bunlara karşılık gelen Kimlikler ve Marks öğrenciler için Jefferson , Emily ve Sara .

İlgili İçerik: Excel'de Diziyi Transpoze Etmek için VBA (3 Yöntem)

Yöntem-7: Tabloyu Bir Dizi İçinde Birden Çok Ölçütle Filtreleme

Burada, aşağıdakilere sahibiz Tablo kimin adı Tablo1 ve Excel kullanarak VBA bu tabloyu isimlere göre filtrelemeye çalışacağız Emily , Daniel ve Gabriel bir dizide birden çok ölçüt olarak.

Adımlar :

Takip et Adım-01 . Yöntem-1 .

➤ Aşağıdaki kodu yazın

 Sub filter_with_array_as_criteria_7() ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Array("Emily", "Daniel", "Gabriel") End Sub 

İşte, ListObjects("Tablo1") tabloyu tanımlamak için kullanılır Tablo1 , Alan:=2 filtreleme işleminin temeli olarak bu aralığın ikinci sütununu ayarlamak için ve son olarak, filtreleme işlemi için birden fazla ad içeren bir dizi tanımladık. Kriterler1 .

➤ Basın F5 .

Sonunda, veri kümesini birden fazla kriter için filtreleyerek öğrencilerin adlarını ve bunlara karşılık gelen Kimlikler ve Marks öğrenciler için Emily , Daniel ve Gabriel .

Daha fazlasını okuyun: Excel VBA: Tabloyu Hücre Değerine Göre Filtreleme (6 Kolay Yöntem)

Uygulama Bölümü

Kendi kendinize pratik yapmanız için bir Uygulama adlı bir sayfada aşağıdaki gibi bir bölüm Uygulama Lütfen bunu kendiniz yapın.

Sonuç

Bu yazıda, Excel kullanarak birden çok ölçütle dizi olarak filtreleme yapmanın yollarını ele almaya çalıştık VBA Umarım faydalı bulursunuz. Herhangi bir öneriniz veya sorunuz varsa, bunları yorum bölümünde paylaşmaktan çekinmeyin.

Hugh West, sektörde 10 yılı aşkın deneyime sahip oldukça deneyimli bir Excel eğitmeni ve analistidir. Muhasebe ve Finans alanında lisans derecesine ve İşletme alanında yüksek lisans derecesine sahiptir. Hugh öğretme tutkusuna sahiptir ve takip etmesi ve anlaması kolay benzersiz bir öğretim yaklaşımı geliştirmiştir. Excel konusundaki uzman bilgisi, dünya çapında binlerce öğrencinin ve profesyonelin becerilerini geliştirmesine ve kariyerlerinde başarılı olmasına yardımcı olmuştur. Hugh, blogu aracılığıyla bilgisini dünyayla paylaşıyor, bireylerin ve işletmelerin tam potansiyellerine ulaşmalarına yardımcı olmak için ücretsiz Excel eğitimleri ve çevrimiçi eğitimler sunuyor.