Correspondance d'index VBA

Correspondance d'index dans VBA

La fonction INDEX & MATCH en combinaison VBA est l'alternative à la fonction VLOOKUP dans Excel. Dans VBA, nous n'avons pas le luxe d'utiliser la fonction INDEX & MATCH directement car ces deux fonctions ne font pas partie des fonctions intégrées de VBA. Cependant, nous pouvons toujours les utiliser dans le cadre de la classe de fonctions de feuille de calcul.

Comment utiliser Index Match dans VBA? (Pas à pas)

Vous pouvez télécharger ce modèle Excel de correspondance d'index VBA ici - Modèle Excel de correspondance d'index VBA

Par exemple, regardez les données ci-dessous.

Dans les données ci-dessus, la valeur de recherche est le nom du service, et en fonction de ce nom de service, nous devons extraire le montant du salaire.

Mais le problème ici est que la colonne de résultat est là dans la première colonne de valeur de recherche est ensuite la colonne de résultat. Dans ce cas, RECHERCHEV ne peut pas récupérer le montant du salaire car RECHERCHEV ne fonctionne que de droite à gauche et non de gauche à droite.

Dans ces cas, nous devons utiliser la formule de combinaison de la fonction VBA INDEX & MATCH. Effectuons la tâche de trouver le montant du salaire de chaque département dans le code VBA.

Étape 1: Démarrez la routine du soleil.

Étape 2: Déclarez la variable VBA Integer.

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer End Sub 

Étape 3: Ouvrez maintenant la boucle suivante dans VBA.

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Next k End Sub 

Étape 4: À l'intérieur de la boucle VBA, exécutez la formule. Dans la 5ème colonne, nous devons appliquer la formule, donc le code est CELLULES (k, 5) .Valeur =

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = Next k End Sub 

Étape 5: Dans cette cellule, nous devons appliquer la formule VBA INDEX & MATCH. Comme je l'ai dit, nous devons utiliser ces fonctions en tant que fonction de feuille de calcul dans la classe vba, alors ouvrez la classe de fonction de feuille de calcul.

Code:

Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = WorksheetFunction. Suivant k End Sub

Étape 6: Après avoir entré la classe de fonctions de feuille de calcul, nous pouvons voir toutes les fonctions de feuille de calcul disponibles, alors sélectionnez la fonction INDEX.

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = WorksheetFunction.Index (Next k End Sub 

Étape 7: Lorsque vous utilisez la fonction de feuille de calcul dans VBA, vous devez être absolument sûr des arguments de la formule. Le premier argument est tableau, c'est-à-dire de quelle colonne nous avons besoin du résultat, dans ce cas, nous avons besoin du résultat de A2 à A5.

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), Next k End Sub 

Étape 8: Ensuite, à partir de quel numéro de ligne nous avons besoin du résultat. Comme nous l'avons vu dans l'exemple précédent, nous ne pouvons pas fournir manuellement le numéro de ligne à chaque fois. Utilisez donc la fonction MATCH.

Pour utiliser à nouveau la fonction MATCH, nous devons ouvrir la classe Worksheet Function.

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Next k End Sub 

Étape 9: Le premier argument des fonctions MATCH est la valeur LOOKUP, ici notre valeur de recherche est les noms de département, elle est là dans les cellules (2, 4).

Puisque chaque fois que le numéro de ligne doit changer, nous pouvons fournir la variable «k» à la place du numéro de ligne manuel 2. Cellules (k, 4).

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cells (k, 5) .Value, Next k End Sub 

Étape 10: Ensuite, nous devons mentionner la plage de valeurs du département, c'est-à-dire Range («B2: B5»).

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cells (k, 5) .Value, Range ("B2: B5"), 

K suivant

End Sub

Étape 11: Ensuite, mettez l'argument à 0 car nous avons besoin d'une correspondance exacte et fermez les crochets.

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cells (k, 4) .Value, Range ("B2: B5"), 0)) 

K suivant

End Sub

Ok, nous en avons terminé avec la partie codage. Exécutons le code pour avoir le résultat dans la colonne 5.

Donc, nous avons le résultat.

Nous pouvons utiliser cette formule comme alternative à la fonction RECHERCHEV.