The VBA filtra funkcija ļauj ātri filtrēt masīvus. Filtrējot masīvus, jāņem vērā vairāki iestatījumi. Mēs tos apspriedīsim tālāk.
Filtrs - atbilstība
Pēc noklusējuma VBA filtra funkcija filtrēs atbilstību masīvu. Zemāk redzamajā piemērā mēs filtrēsim masīvu atbilstībām ar “Smith”.
1234567891011121314 | Apakšfiltra_atbilstība ()'Definējiet masīvuDim strNames As VariantstrNames = Array ("Stīvs Smits", "Šenona Smita", "Raiens Džonsons")'Filtra masīvsDim strSubNames As VariantstrSubNames = Filtrs (strNames, "Smith")'Skaits filtrēts masīvsMsgBox "Atrasts" un UBound (strSubNames) - LBound (strSubNames) + 1 & "vārdi".Beigu apakš |
Pāris svarīgi punkti:
- Lai izvairītos no masīva lieluma definēšanas, filtrētais masīva mainīgais ir jādeklarē kā datu tipa variants.
- Pēc noklusējuma funkcija Filtrs ir reģistrjutīga. Tātad filtrēšana uz “smith” dotu atšķirīgu rezultātu nekā “Smith”. Tālāk mēs parādīsim, kā mainīt šo iestatījumu.
Filtrs - reģistrjutīgs
Pēc noklusējuma VBA ir reģistrjutīgs. Tas nozīmē, ka “smits” nav vienāds ar “Smitu”. Tas attiecas uz filtra funkciju, kā arī uz visām (lielākoties?) Citām VBA funkcijām vai salīdzinājumiem.
Personīgi es nekad nevēlos, lai VBA būtu reģistrjutīgs, tāpēc visu savu koda moduļu augšpusē vienmēr pievienoju opciju Salīdzināt tekstu. Opcija Salīdzināt tekstu liek VBA ignorēt reģistrus, lai tie nejustu reģistrus:
1 | Opcija Salīdzināt tekstu |
Pievienojot opciju Salīdzināt tekstu moduļa augšpusē, filtra funkcijas reģistrs kļūs nejutīgs. Varat arī norādīt, ka pati filtrēšanas funkcija ir reģistrjutīga, neņemot vērā argumentu vbTextCompare:
1 | strSubNames = Filtrs (strNames, "smith",, vbTextCompare) |
Pilns piemērs:
1234567891011121314 | Apakšfiltrs_atbilstības gadījums ()'Definējiet masīvuDim strNames As VariantstrNames = Array ("Stīvs Smits", "Šenona Smita", "Raiens Džonsons")'Filtra masīvsDim strSubNames As VariantstrSubNames = Filtrs (strNames, "smith",, vbTextCompare)'Skaits filtrēts masīvsMsgBox "Atrasts" un UBound (strSubNames) - LBound (strSubNames) + 1 & "vārdi".Beigu apakš |
Filtrs - neatbilst
Filtra funkciju var izmantot arī, lai identificētu masīva vienumus, kas NE atbilst ievadītajiem kritērijiem, iestatot Iekļaut argumentu uz FALSE:
1 | strSubNames = Filtrs (strNames, "Smith", False) |
Pilns piemērs:
1234567891011121314 | Apakšfiltrs_Neatbilst ()'Definējiet masīvuDim strNames As VariantstrNames = Array ("Stīvs Smits", "Šenona Smita", "Raiens Džonsons")'Filtra masīvsDim strSubNames As VariantstrSubNames = Filtrs (strNames, "Smith", False)'Skaits filtrēts masīvsMsgBox "Atrasts" un UBound (strSubNames) - LBound (strSubNames) + 1 & "vārdi".Beigu apakš |
Filtra funkcija
Funkcija VBA filtrs atgriež piegādātā virkņu masīva masīva apakškopu.
Filtra funkcijas sintakse ir šāda:
Filtrs (SourceArray, Match, [Include], [Compare])
Funkcijas argumenti ir šādi:
- SourceArray - Oriģinālais masīvs filtrēšanai
- Saskaņot - Virkne, kas jāmeklē
- [Iekļaut] - NEOBLIGĀTI TRUE (atgriež atbilstības), FALSE (atgriež neatbilstošus elementus)
- [Salīdzināt] - NEOBLIGĀTI vbBinaryCompare - binārais salīdzinājums, vbTextCompare - teksta salīdzinājums, vbDatabaseCompare - datu bāzes salīdzinājums