Vérifiez si la valeur de la cellule existe dans la colonne, puis obtenez la valeur de la cellule suivante


89

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 A1existe dans column B, et en supposant qu'elle correspond B5, alors je veux 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 à 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))

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

Réponses:


99

Utilisez une fonction différente, telle que RECHERCHEV:

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

1
Merci! Cela fonctionne aussi! Et je pense qu'il serait préférable d'utiliser VLOOKUP(A1, B:C, 2, FALSE)au lieu d'utiliser une plage fixe (afin de s'adapter à un tableau de recherche croissant)?
SNag

1
Ouais, je viens d'utiliser cette plage fixe comme test. Je l'ai modifié dans ma réponse.
CustomX

Vous n'avez pas besoin IFERRORici. Cela fonctionne bien sans lui, car la RECHERCHEV n'est exécutée que s'il y a une correspondance.
SNag

Oups! Il me semble avoir testé dans la mauvaise colonne: P En effet sans IFERROR ça marche aussi parfaitement: P
CustomX

3
C'est plus vieux que vieux, mais je voulais juste dire que je l'utilise depuis des années et cela me dérange vraiment que vous n'ayez jamais eu la meilleure réponse. J'adore le fait que cela rend le tableau évolutif pour comparer plusieurs colonnes.
DuffDuff

36

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

=VLOOKUP(A1, B:C, 2, FALSE) 

fonctionne bien et fait ce que je voulais, sauf que ça revient #N/A pour les non-correspondances; il convient donc au cas où l'on sait que la valeur existe définitivement dans la colonne de recherche.

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

Pour éviter les #N/Anon-correspondances, faites:

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

3
Utilisez plutôt ceci IFERROR(VLOOKUP(A1, B:C, 2, FALSE),0). J'ai également ajouté ceci à ma réponse. 0 étant la valeur que vous voulez :) (utilisez ceci dans le code mènera à Aucune correspondance si aucune correspondance n'est trouvée;)
CustomX

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.