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