Fonction de correspondance Excel VBA

La fonction de correspondance VBA recherche la position ou le numéro de ligne de la valeur de recherche dans le tableau, c'est-à-dire dans la table Excel principale. Par exemple, VLOOKUP, HLOOKUP, MATCH, INDEX, etc. Ce sont les fonctions de recherche qui sont plus importantes que d'autres. Malheureusement, nous n'avons pas les mêmes fonctions disponibles dans VBA pour faciliter les choses. Cependant, nous pouvons utiliser ces fonctions comme fonctions de feuille de calcul sous le script VBA pour nous faciliter la vie.

Aujourd'hui, nous sommes sur le point d'apprendre la fonction MATCH qui peut être utilisée comme fonction de feuille de calcul sous VBA.

VBA Match a la même utilisation que la formule Match dans Excel. Cette fonction dans MS Excel VBA trouve une correspondance dans un tableau en référence à la valeur de recherche et imprime sa position. Cette fonction devient utile lorsque vous devez évaluer les données en fonction de certaines valeurs. Par exemple, VBA MATCH est utile si vous disposez des données salariales des employés et que vous devez connaître la position numérique d'un employé dans vos données dont le salaire est inférieur / supérieur à / égal à une certaine valeur. Il est vraiment utile pour analyser les données et une ligne de code peut également automatiser les choses pour vous.

Syntaxe de la fonction de correspondance dans Excel VBA

VBA Match a la syntaxe suivante:

Où,

  • Arg1 - Lookup_value - La valeur que vous devez rechercher dans un tableau donné.
  • Arg2 - Lookup_array - un tableau de lignes et de colonnes qui contiennent une valeur Lookup_value possible.
  • Arg3 - Match_type - Le type de correspondance qui prend la valeur -1, 0 ou 1.

Si match_type = -1 signifie que la fonction MATCH trouvera la plus petite valeur supérieure ou égale à lookup_value. Pour cela, le lookup_array doit être trié par ordre décroissant.

Si match_type = 0 signifie que la fonction MATCH trouvera la valeur qui est exactement la même que celle de lookup_value.

Si match_type = +1, cela signifie que la fonction MATCH trouvera la plus grande valeur qui est inférieure ou égale à lookup_value. Pour cela, le lookup_array doit être trié par ordre croissant. La valeur par défaut pour le type de correspondance est +1.

Comment utiliser la fonction de correspondance Excel VBA?

Nous allons apprendre à utiliser une fonction VBA Match Excel avec quelques exemples.

Vous pouvez télécharger ce modèle Excel Match VBA ici - Modèle Excel Match VBA

Fonction de correspondance VBA - Exemple # 1

Supposons que nous ayons des données comme indiqué ci-dessous:

Nous devons trouver qui de cette liste a un salaire de 30 000 € ainsi qu'un poste dans Excel.

Bien que dans cet ensemble de données, nous puissions le configurer manuellement, pensez à une image plus large, que se passe-t-il si vous avez des millions de lignes et de colonnes?

Suivez les étapes ci-dessous pour utiliser la fonction MATCH dans VBA.

Étape 1: définir une sous-procédure en donnant un nom à la macro.

Code:

 Sub exmatch1 () End Sub 

Étape 2: Maintenant, nous voulons que notre sortie soit stockée dans la cellule E2. Par conséquent, commencez à écrire le code sous la forme Range («E2»). Value =

Ceci définit la plage de sortie pour notre résultat.

Code:

 Sub exmatch1 () Range ("E2"). Value = End Sub 

Étape 3: utilisez WorksheetFunction pour pouvoir utiliser les fonctions VBA.

Code:

 Sub exmatch1 () Range ("E2"). Value = WorksheetFunction End Sub 

Étape 4: WorksheetFunction a une variété de fonctions qui peuvent être consultées et utilisées sous VBA. Après «WorksheetFunction», mettez un point (.) Et vous pourrez alors accéder aux fonctions. Choisissez la fonction MATCH dans la liste déroulante.

Code:

 Sub exmatch1 () Range ("E2"). Value = WorksheetFunction.Match End Sub 

Étape 5: Maintenant, donnez les arguments à la fonction MATCH. Comme Lookup_value. Notre Lookup_value est stockée dans la cellule D2 comme indiqué dans la capture d'écran ci-dessous. Vous pouvez y accéder sous la fonction MATCH en utilisant la fonction Range.

Code:

 Sub exmatch1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, End Sub 

Étape 6: Le deuxième argument est Lookup_array. Il s'agit de la plage de table dans laquelle vous souhaitez connaître la position de Lookup_value. Dans notre cas, c'est (B1: B11). Fournissez ce tableau à l'aide de la fonction Range.

Code:

 Sub exmatch1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, Range ("B1: B11"), End Sub 

Étape 7: Le dernier argument pour que ce code fonctionne est Match_type. Nous voulions avoir une correspondance exacte pour Lookup_value dans une plage donnée> Par conséquent, donnez zéro (0) comme argument correspondant.

Code:

 Sub exmatch1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, Range ("B1: B11"), 0) End Sub 

Étape 8: exécutez ce code en appuyant sur F5 ou sur le bouton Exécuter et voyez la sortie.

Vous pouvez voir dans la cellule E2, il y a une valeur numérique (6) qui montre la position de la valeur de la cellule D2 à la plage B1: B11.

Exemple # 2 - Fonction de correspondance VBA avec boucles

C'est facile lorsque vous n'avez qu'une seule valeur à rechercher dans toute la plage. Mais que faire si vous devez vérifier la position d'un certain nombre de cellules? Ce serait dur pour une personne qui ajoute de lui demander d'écrire les codes séparés pour chaque cellule.

Dans de tels cas, la fonction MATCH peut être utilisée avec boucle (en particulier pour boucle dans notre cas). Voir les étapes suivantes pour avoir une idée de la façon dont nous utilisons la fonction MATCH avec boucle.

Étape 1: définir une sous-procédure en donnant un nom à la macro.

Code:

 Sub Example2 () End Sub 

Étape 2: définissez un entier pouvant contenir la valeur de plusieurs cellules dans la boucle.

Code:

 Sub Example2 () Dim i As Integer End Sub 

Étape 3: utilisez la boucle For sur l'entier pour utiliser les différentes valeurs de recherche dont la position peut être stockée dans la colonne E.

Code:

 Sub Example2 () Dim i As Integer Pour i = 2 à 6 End Sub 

Étape 4: Maintenant, utilisez la même méthode que celle utilisée dans l'exemple 1, juste au lieu de Range, nous utiliserons la fonction Cells et utiliserons un tableau à deux dimensions (lignes et colonnes) contrairement au premier exemple.

Code:

 Sous-exemple2 () Dim i as Integer For i = 2 to 6 Cells (i, 5) .Value = WorksheetFunction.Match (Cells (i, 4) .Value, Range ("B2: B11"), 0) Next i End Sous 

Ici, Cells (i, 5) .Value = stocke la valeur des positions résultantes dans chaque ligne de 2 à 6 (ligne i) dans la colonne E (colonne numéro 5). Sous la fonction Match, Cells (i, 4) .Values ​​vérifie chaque Lookup_value présent dans les lignes 2 à 6 de la 4 e colonne. Cette valeur de recherche a ensuite été recherchée dans le tableau B2: B11 dans la feuille Excel où les données sont présentes et les positions relatives peuvent être stockées dans chaque ligne de la colonne 5 (colonne E).

Étape 5: exécutez ce code en appuyant simultanément sur F5 ou sur le bouton Exécuter et voyez le résultat. Il va presque retirer la magie d'un morceau de code avec une seule ligne.

Dans cet article, nous avons appris comment utiliser la fonction MATCH sous VBA comme cas spécial de WorksheetFunction.

Choses dont il faut se rappeler

  • Lookup_value peut être un nombre / texte / valeur logique ou peut être une référence de cellule à un nombre, du texte ou une valeur logique.
  • Par défaut, Match_type peut être considéré comme 1, s'il est omis / non mentionné.
  • Comme pour la fonction Excel MATCH, VBA MATCH donne également la position relative d'une Lookup_value sous Lookup_array et non la valeur elle-même.
  • Si aucune correspondance n'est trouvée, une cellule Excel relative sera remplie avec # N / A.
  • Si la fonction MATCH est utilisée sur les valeurs de texte, elle ne peut pas faire la différence entre les minuscules et les majuscules. Par exemple, Lalit et lalit sont identiques. Il en va de même pour LALIT et lalit.
  • Des caractères génériques peuvent être utilisés si vous recherchez la correspondance exacte (c'est-à-dire que le type de correspondance est zéro). L'astérisque du caractère générique (*) peut être utilisé pour trouver une série de caractères. Alors qu'un point d'interrogation (?) Peut être utilisé pour trouver un seul caractère.

Articles recommandés

Ceci est un guide de la fonction de correspondance VBA. Ici, nous discutons de la correspondance VBA et de la façon d'utiliser la fonction de correspondance VBA Excel avec des exemples pratiques et un modèle Excel téléchargeable. Vous pouvez également consulter nos autres articles suggérés -

  1. Guide complet de VBA en cas d'erreur
  2. Comment utiliser le format de nombre VBA?
  3. Fonction VBA VLOOKUP avec des exemples
  4. Création d'une fonction VBA dans Excel
  5. Fonction de correspondance Excel (exemples)

Catégorie: