Après avoir vérifié si une valeur de cellule existe dans une colonne, je dois obtenir la valeur de la cellule à côté de la cellule correspondante . Par exemple, je vérifie si la valeur dans la cell A1
existe dans la column B
, et en supposant qu’elle correspond à B5
, alors je veux la valeur dans la cell C5
.
Pour résoudre la première partie du problème, je l’ai fait …
=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", "Match")
… et ça a marché. Ensuite, grâce à une réponse antérieure sur SO , j’ai également pu obtenir le numéro de ligne de la cellule correspondante:
=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", "Match on Row " & MATCH(A1,B:B, 0))
Donc, naturellement, pour obtenir la valeur de la cellule suivante, j’ai essayé …
=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", C&MATCH(A1,B:B, 0))
… et ça ne marche pas.
Qu’est-ce que je rate? Comment append le numéro de colonne au numéro de ligne renvoyé pour obtenir le résultat souhaité?
Utilisez une fonction différente, comme VLOOKUP:
=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", VLOOKUP(A1,B:C,2,FALSE))
Après la réponse de t.thielemans , je travaillais juste
=VLOOKUP(A1, B:C, 2, FALSE)
fonctionne bien et fait ce que je voulais, sauf qu’il renvoie #N/A
pour les non-correspondances; il convient donc au cas où l’on sait que la valeur existe bien dans la colonne de recherche.
Edit (basé sur le commentaire de t.thielemans):
Pour éviter #N/A
pour les non-matches, faites:
=IFERROR(VLOOKUP(A1, B:C, 2, FALSE), "No Match")
Que dis-tu de ça?
=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", INDIRECT(ADDRESS(MATCH(A1,B:B, 0), 3)))
Le «3» à la fin signifie pour la colonne C.