Table des matières
Si vous cherchez des moyens de filtre avec un tableau de critères multiples dans Excel VBA Le filtrage d'un grand ensemble de données sur la base de plusieurs critères peut être facilité par l'utilisation de l'outil de gestion des données. VBA plutôt que d'utiliser la fonction classique d'Excel.
Alors, commençons notre article principal.
Télécharger le cahier d'exercices
Filtre à critères multiples.xlsm7 façons de filtrer avec plusieurs critères dans un tableau en utilisant Excel VBA
Dans le jeu de données suivant, nous avons quelques enregistrements de notes correspondant au nom des étudiants et à leurs identifiants. Nous allons essayer de filtrer ce jeu de données en fonction de différents critères sous forme de tableau en utilisant certains codes.
Nous avons utilisé Microsoft Excel 365 ici, vous pouvez utiliser toute autre version selon votre convenance.
Méthode-1 : Filtrer avec des critères multiples en tant que textes dans un tableau
Ici, nous allons essayer de filtrer l'ensemble de données suivant sur la base de l'indice de qualité de l'eau. Nom de l'élève pour des critères multiples contenant les chaînes de caractères Emily , Daniel et Gabriel dans un tableau.
Step-01 :
➤ Allez à la Développeur Tab>> ; Visual Basic Option.
Ensuite, le Éditeur Visual Basic s'ouvrira.
➤ Allez à la Insérer Tab>> ; Module Option.
Après cela, un Module sera créé.
Step-02 :
➤ Écrivez le code suivant
Sub filter_with_array_as_criteria_1() ActiveSheet.Range("B3:D3").AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Array("Emily", "Daniel", "Gabriel") End Sub
Ici, nous avons déclaré les noms d'en-tête dans la plage B3:D3 dans lequel nous appliquerons le filtre et Champ:=2 est le numéro de la colonne de cette plage sur laquelle nous allons effectuer ce processus de filtrage.
Enfin, nous avons défini les critères comme un tableau pour déclarer plusieurs noms d'étudiants, par exemple Emily , Daniel et Gabriel .
➤ Press F5 .
Ensuite, l'ensemble de données sera filtré en fonction de plusieurs critères afin d'afficher le nom des étudiants et leur correspondance. Ids et Marks pour les étudiants Emily , Daniel et Gabriel .
Lire la suite : Filtrer des critères multiples dans Excel (4 façons appropriées)
Méthode 2 : Filtrer avec plusieurs critères numériques dans un tableau en utilisant Excel VBA
Ici, nous allons filtrer l'ensemble de données suivant pour les identifiants. 101135 , 101137 et 101138 en utilisant ces chiffres comme critères multiples dans un tableau.
Étapes :
➤ Follow Step-01 de Méthode 1 .
➤ Écrivez le code suivant
Sub filter_with_array_as_criteria_2() ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=Array("101135", "101137", "101138") End Sub
Ici, nous avons déclaré les noms d'en-tête dans la plage B3:D3 dans lequel nous appliquerons le filtre et Champ:=2 est le numéro de la colonne de cette plage sur laquelle nous allons effectuer ce processus de filtrage.
Enfin, nous avons défini les critères comme un tableau pour déclarer les identifiants de plusieurs étudiants, par exemple 101135 , 101137 et 101138 et nous les avons mis entre guillemets pour les spécifier comme des chaînes de caractères car AutoFiltre ne fonctionnera que pour un tableau de chaînes de caractères.
➤ Press F5 .
Après cela, vous obtiendrez les noms et les notes des étudiants ayant des identifiants. 101135 , 101137 et 101138 .
Lire la suite : VBA pour récupérer les valeurs uniques d'une colonne dans un tableau en Excel (3 critères)
Méthode 3 : Définir plusieurs critères dans une plage pour l'utiliser comme tableau
Ici, nous avons énuméré les critères dans le Liste colonne contenant les identifiants 101134 , 101135 et 101136 sur la base duquel nous ferons notre processus de filtrage.
Étapes :
➤ Follow Step-01 de Méthode 1 .
➤ Écrivez le code suivant
Sub filter_with_array_as_criteria_3() Dim ID_range, k As Variant ID_range = Application.Transpose(ActiveSheet.Range("F4:F6") For k = LBound(ID_range) To UBound(ID_range) ID_range(k) = CStr(ID_range(k)) Next k ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=ID_range End Sub
Ici, nous avons déclaré ID_gamme , k comme Variante et ID_gamme est le tableau qui stockera les critères multiples, et k est l'incrément allant de la limite inférieure à la limite supérieure de ce tableau. Pour avoir la limite inférieure et la limite supérieure, nous avons utilisé la fonction Fonction LBOUND et Fonction UBOUND respectivement.
Le site Boucle FOR est utilisé pour convertir les valeurs autres que des chaînes de caractères dans le tableau en chaînes de caractères à l'aide de la fonction Fonction CStr Enfin, nous avons utilisé ce tableau comme suit Critères1 .
➤ Press F5 .
Par la suite, vous obtiendrez les noms et les notes des étudiants ayant des identifiants. 101134 , 101135 et 101136 .
Lire la suite : Filtrer une colonne différente par plusieurs critères dans Excel VBA
Lectures similaires
- Comment filtrer les valeurs uniques dans Excel (8 méthodes simples)
- Effectuer un filtre personnalisé dans Excel (5 façons)
- Calculer la moyenne d'un tableau avec VBA (Macro, UDF et UserForm)
- Raccourci pour le filtre Excel (3 utilisations rapides avec exemples)
Méthode 4 : Utilisation des fonctions SPLIT et JOIN pour créer un tableau avec plusieurs critères
Ici, nous utiliserons la liste suivante dans l'onglet Liste en tant que tableau et pour filtrer correctement l'ensemble de données, nous utiliserons également la colonne Fonction SPLIT , Fonction JOIN et Fonction TRANSPOSE dans un VBA code.
Étapes :
➤ Follow Step-01 de Méthode 1 .
➤ Écrivez le code suivant
Sub filter_with_array_as_criteria_4() ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=Split(Join(Application.Transpose(Range("F4:F6")), ","), ",") End Sub
Ici, TRANSPOSE convertira le 2D dans un tableau 1D sinon, le tableau AutoFiltre ne fonctionnera pas, JOIN joindra chacune des valeurs dans un tableau de chaînes de caractères, et enfin, SPLIT décomposera chaque chaîne de caractères pour les saisir séparément comme critères de filtrage de l'ensemble de données.
➤ Press F5 .
Enfin, vous obtiendrez les noms et les notes des étudiants ayant un identifiant. 101134 , 101135 et 101136 .
Lire la suite : Comment diviser une chaîne en un tableau en VBA (3 façons)
Méthode 5 : Filtrer avec plusieurs critères dans une boucle pour un tableau avec VBA
Dans cette section, nous allons filtrer l'ensemble de données suivant en fonction des critères suivants Identité de l'étudiant pour plusieurs critères, comme indiqué dans la liste des Liste colonne.
Étapes :
➤ Follow Step-01 de Méthode 1 .
➤ Écrivez le code suivant
Sub filter_with_array_as_criteria_5() Dim k As Integer Dim ID_range(100) As String For k = 4 To 6 ID_range(k) = ActiveSheet.Range("F" & ; k) Next k ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=ID_range End Sub
Ici, nous avons déclaré k comme Entier , ID_range(100) comme Chaîne de caractères où ID_gamme est un tableau qui permet de stocker jusqu'à 100 Pour déterminer les valeurs de ce tableau, nous avons utilisé la fonction Boucle FOR pour k de 4 à 6 comme les numéros de ligne de la Liste et F est le nom de la colonne.
Enfin, nous avons utilisé ce tableau comme Critères1 pour AutoFiltre .
➤ Press F5 .
Finalement, vous obtiendrez les noms et les notes des étudiants ayant des identifiants. 101134 , 101135 et 101136 .
Lire la suite : Filtrer plusieurs critères dans Excel avec VBA (types AND et OR)
Méthode 6 : Utilisation d'une plage nommée pour des critères multiples
Ici, nous avons énuméré quelques noms d'étudiants dans le Liste et nommé cette plage comme Étudiant À l'aide de cette plage nommée, nous allons définir un tableau qui contiendra plusieurs critères pour l'analyse de l'échantillon. AutoFiltre fonction.
Étapes :
➤ Follow Step-01 de Méthode 1 .
➤ Écrivez le code suivant
Sub filter_with_array_as_criteria_6() Dim Student_range, k As Variant Student_range = Application.Transpose(ActiveSheet.Range("Student")) ActiveSheet.Range("B3:D3").AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Student_range End Sub
Ici, nous avons déclaré Gamme d'étudiants , k en tant que Variante et a utilisé le Fonction TRANSPOSE pour convertir le 2D tableau de l'intervalle nommé Étudiant en un 1D et l'a ensuite stocké dans Gamme d'étudiants Ensuite, il est utilisé comme Critères1 pour le AutoFiltre méthode.
➤ Press F5 .
Ensuite, l'ensemble de données sera filtré en fonction de plusieurs critères afin d'afficher le nom des étudiants et leur correspondance. Ids et Marks pour les étudiants Jefferson , Emily et Sara .
Contenu connexe : VBA pour transposer un tableau dans Excel (3 méthodes)
Méthode 7 : Filtrer un tableau avec plusieurs critères dans un tableau
Ici, nous avons les éléments suivants Tableau dont le nom est Tableau 1 et en utilisant Excel VBA nous allons essayer de filtrer ce tableau en fonction des noms Emily , Daniel et Gabriel comme critères multiples dans un tableau.
Étapes :
➤ Follow Step-01 de Méthode 1 .
➤ Écrivez le code suivant
Sub filter_with_array_as_criteria_7() ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Array("Emily", "Daniel", "Gabriel") End Sub
Ici, ListObjects("Table1") est utilisé pour définir la table Tableau 1 , Champ:=2 pour définir la deuxième colonne de cette plage comme base du processus de filtrage et enfin nous avons défini un tableau contenant plusieurs noms pour Critères1 .
➤ Press F5 .
Finalement, vous aurez un ensemble de données filtrées pour plusieurs critères afin d'afficher le nom des étudiants et leur correspondance. Ids et Marks pour les étudiants Emily , Daniel et Gabriel .
Lire la suite : Excel VBA : filtrez un tableau en fonction de la valeur d'une cellule (6 méthodes simples)
Section pratique
Pour vous entraîner vous-même, nous avons fourni un Pratique comme ci-dessous dans une feuille nommée Pratique S'il vous plaît, faites-le vous-même.
Conclusion
Dans cet article, nous avons essayé de couvrir les façons de filtrer avec plusieurs critères comme un tableau en utilisant Excel. VBA facilement. J'espère que vous le trouverez utile. Si vous avez des suggestions ou des questions, n'hésitez pas à les partager dans la section des commentaires.