web-dev-qa-db-fra.com

Vérifiez si la valeur de la cellule existe dans la colonne, puis récupérez la valeur de la cellule NEXT

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 cell A1 existe dans column B, et en supposant qu'elle corresponde à B5, je souhaite alors la valeur dans cell C5.

Pour résoudre la première moitié du problème, j'ai fait ceci ...

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", "Match")

... et cela a fonctionné. Ensuite, grâce à un réponse précédente 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))

Alors naturellement, pour avoir 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 ajouter le numéro de colonne au numéro de ligne renvoyé pour obtenir le résultat souhaité?

86
SNag

Après réponse de t.thielemans , j'ai travaillé que

=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 est donc approprié pour le cas où il est connu que la valeur existe définitivement dans la colonne de recherche.

Edit (basé sur le commentaire de t.thielemans):

Pour éviter #N/A en cas de non concordance, procédez comme suit:

=IFERROR(VLOOKUP(A1, B:C, 2, FALSE), "No Match")
35
SNag

Utilisez une fonction différente, telle que VLOOKUP:

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", VLOOKUP(A1,B:C,2,FALSE))
99
CustomX

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.

7
Vincent Tan