VBA Filtre Dizileri

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ı

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave