Matrici di filtri VBA

Il Funzione filtro VBA consente di filtrare rapidamente gli array. Ci sono diverse impostazioni da considerare quando si filtrano gli array. Li discuteremo di seguito.

Filtro - Abbina

Per impostazione predefinita, la funzione di filtro VBA filtrerà un array per le corrispondenze. Nell'esempio seguente filtreremo l'array per le corrispondenze con "Smith".

1234567891011121314 Sottofiltro_Partita()"Definisci matrice"Dim strNames As VariantstrNames = Array("Steve Smith", "Shannon Smith", "Ryan Johnson")"Filtro matrice"Dim strSubNames As VariantstrSubNames = Filter(strNames, "Smith")"Conteggio array filtrato"MsgBox "Trovato " & UBound(strSubNames) - LBound(strSubNames) + 1 & " nomi."Fine sottotitolo

Un paio di punti importanti:

  • La variabile dell'array filtrata deve essere dichiarata come variante del tipo di dati per evitare di definire la dimensione dell'array.
  • Per impostazione predefinita, la funzione Filtro fa distinzione tra maiuscole e minuscole. Quindi il filtraggio su "smith" darebbe un risultato diverso rispetto a "Smith". Di seguito ti mostreremo come modificare questa impostazione.

Filtro - Senza distinzione tra maiuscole e minuscole

Per impostazione predefinita, VBA fa distinzione tra maiuscole e minuscole. Ciò significa che "smith" non è uguale a "Smith". Questo è vero per la funzione filtro, così come per tutte (la maggior parte?) altre funzioni o confronti VBA.

Personalmente, non voglio mai che VBA faccia distinzione tra maiuscole e minuscole, quindi aggiungo sempre Option Compare Text nella parte superiore di tutti i miei moduli di codice. L'opzione Confronta testo dice a VBA di ignorare le maiuscole in modo che non faccia distinzione tra maiuscole e minuscole:

1 Opzione Confronta testo

L'aggiunta dell'opzione Confronta testo nella parte superiore del modulo renderà la funzione di filtro insensibile alle maiuscole. In alternativa, puoi dire alla stessa funzione di filtro di non fare distinzione tra maiuscole e minuscole con l'argomento vbTextCompare:

1 strSubNames = Filter(strNames, "smith", , vbTextCompare)

Esempio completo:

1234567891011121314 Sub Filter_MatchCase()"Definisci matrice"Dim strNames As VariantstrNames = Array("Steve Smith", "Shannon Smith", "Ryan Johnson")"Filtro matrice"Dim strSubNames As VariantstrSubNames = Filter(strNames, "smith", , vbTextCompare)"Conteggio array filtrato"MsgBox "Trovato " & UBound(strSubNames) - LBound(strSubNames) + 1 & " nomi."Fine sottotitolo

Filtro - Non corrisponde

La funzione di filtro può essere utilizzata anche per identificare gli elementi dell'array che NON corrispondono ai criteri inseriti impostando l'argomento Include su FALSE:

1 strSubNames = Filter(strNames, "Smith", False)

Esempio completo:

1234567891011121314 Sottofiltro_Nessuna corrispondenza()"Definisci matrice"Dim strNames As VariantstrNames = Array("Steve Smith", "Shannon Smith", "Ryan Johnson")"Filtro matrice"Dim strSubNames As VariantstrSubNames = Filter(strNames, "Smith", False)"Conteggio array filtrato"MsgBox "Trovato " & UBound(strSubNames) - LBound(strSubNames) + 1 & " nomi."Fine sottotitolo

Funzione filtro

La funzione Filtro VBA restituisce un sottoinsieme Array di una matrice di stringhe fornita.

La sintassi della funzione di filtro è:

Filtro (Sorgente Array, Corrispondenza, [Includi], [Confronta])

Gli argomenti della funzione sono:

  • SourceArray - L'array originale da filtrare
  • Incontro - La stringa da cercare
  • [Includere] - OPZIONALE TRUE (Restituisce corrispondenze), FALSE (Restituisce elementi che non corrispondono)
  • [Confrontare] - OPZIONALE vbBinaryCompare - confronto binario, vbTextCompare - confronto testo, vbDatabaseCompare - confronto database

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave