VBA filtru masīvi

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

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave