NS VBA Filtre İşlevi dizileri hızlı bir şekilde filtrelemenizi sağlar. Dizileri filtrelerken dikkate alınması gereken birkaç ayar vardır. Bunları aşağıda tartışacağız.
Filtre - Maç
Varsayılan olarak VBA Filtre İşlevi, eşleşmeler için bir diziyi filtreleyecektir. Aşağıdaki örnekte diziyi “Smith” ile eşleşmeler için filtreleyeceğiz.
1234567891011121314 | Alt Filter_Match()'Diziyi TanımlaVaryant Olarak Dim strNamesstrNames = Array("Steve Smith", "Shannon Smith", "Ryan Johnson")'Filtre DizisiVaryant Olarak Dim strSubNamesstrSubNames = Filtre(strNames, "Smith")'Sayım Filtrelenmiş DiziMsgBox "Found" & UBound(strSubNames) - LBound(strSubNames) + 1 & " name."Alt Bitiş |
Birkaç önemli nokta:
- Dizi boyutunu tanımlamaktan kaçınmak için filtrelenmiş dizi değişkeni, veri türü varyantı olarak bildirilmelidir.
- Varsayılan olarak, Filtre işlevi büyük/küçük harf duyarlıdır. Yani “smith” üzerinde filtreleme yapmak “Smith” den farklı bir sonuç verecektir. Aşağıda bu ayarı nasıl değiştireceğinizi göstereceğiz.
Filtre - Büyük/Küçük Harfe Duyarlı Değil
Varsayılan olarak VBA, Büyük/Küçük Harfe Duyarlıdır. Bu, “smith”in “Smith”e eşit olmadığı anlamına gelir. Bu, Filtre İşlevinin yanı sıra tüm (çoğu?) diğer VBA işlevleri veya karşılaştırmaları için de geçerlidir.
Şahsen, VBA'nın büyük/küçük harf duyarlı olmasını asla istemem, bu yüzden her zaman tüm kod modüllerimin üstüne Seçenek Karşılaştırma Metni eklerim. Metni Karşılaştır seçeneği, VBA'ya büyük/küçük harfe Duyarsız olması için büyük/küçük harfe dikkat etmemesini söyler:
1 | Seçenek Metni Karşılaştır |
Modülünüzün üstüne Metni Karşılaştır Seçeneği eklemek, Filtre İşlevini büyük/küçük harfe duyarsız hale getirir. Alternatif olarak, Filtre İşlevinin kendisinin vbTextCompare bağımsız değişkeniyle büyük/küçük harfe duyarlı olmadığını söyleyebilirsiniz:
1 | strSubNames = Filtre(strNames, "smith", , vbTextCompare) |
Tam örnek:
1234567891011121314 | Alt Filter_MatchCase()'Diziyi TanımlaVaryant Olarak Dim strNamesstrNames = Array("Steve Smith", "Shannon Smith", "Ryan Johnson")'Filtre DizisiVaryant Olarak Dim strSubNamesstrSubNames = Filtre(strNames, "smith", , vbTextCompare)'Sayım Filtrelenmiş DiziMsgBox "Found" & UBound(strSubNames) - LBound(strSubNames) + 1 & " name."Alt Bitiş |
Filtre - Eşleşmiyor
Filtre İşlevi aynı zamanda dizi öğelerini tanımlamak için de kullanılabilir. YAPAMAZ Dahil Et bağımsız değişkenini YANLIŞ olarak ayarlayarak girilen ölçütleri eşleştirin:
1 | strSubNames = Filtre(strNames, "Smith", Yanlış) |
Tam Örnek:
1234567891011121314 | Alt Filtre_NoMatch()'Diziyi TanımlaVaryant Olarak Dim strNamesstrNames = Array("Steve Smith", "Shannon Smith", "Ryan Johnson")'Filtre DizisiVaryant Olarak Dim strSubNamesstrSubNames = Filtre(strNames, "Smith", Yanlış)'Sayım Filtrelenmiş DiziMsgBox "Found" & UBound(strSubNames) - LBound(strSubNames) + 1 & " name."Alt Bitiş |
Filtre İşlevi
VBA Filtresi işlevi, sağlanan bir dize dizisinin Dizi alt kümesini döndürür.
Filtre İşlevi Sözdizimi:
Filtre( SourceArray, Match, [Include], [Compare] )
İşlev argümanları şunlardır:
- SourceArray - Filtrelenecek orijinal Dizi
- Kibrit - Aranacak dize
- [Katmak] - İSTEĞE BAĞLI TRUE (Eşleşmeleri döndürür), FALSE (Eşleşmeyen öğeleri döndürür)
- [Karşılaştırmak] - İSTEĞE BAĞLI vbBinaryCompare - ikili karşılaştırma, vbTextCompare - metin karşılaştırması, vbDatabaseCompare - veritabanı karşılaştırması