J'ai une feuille Google ( exemple ) avec un vlookup de base pour créer une colonne sommable. Il renvoie "# N/A" pour chaque clé de recherche introuvable et attache l'erreur suivante à ces cellules:
Erreur Impossible de trouver la valeur "[email protected]" dans l'évaluation de RECHERCHEV.
Après beaucoup de recherches, la seule solution que j'ai trouvée était d'envelopper le vlookup dans un IF (ISNA ()), donné dans Comment lier diverses feuilles de calcul Google en utilisant IMPORTRANGEs qui contiennent des formules VLOOKUP sans obtenir # N/A retourné? =. Cela fonctionne, mais il semble vraiment que je ne devrais pas avoir à le faire. Y a-t-il un autre moyen?
Update 2019-03-01: La meilleure solution est maintenant =IFNA(VLOOKUP(…), 0)
. Voir cette autre réponse .
Vous pouvez utiliser la formule suivante. Il remplacera les valeurs #N/A
Renvoyées par VLOOKUP(…)
par 0
.
=SUMIF(VLOOKUP(…),"<>#N/A")
Comment ça marche: Cela utilise SUMIF()
avec une seule valeur pour résumer. Le résultat est donc cette valeur - si elle n'est pas égale à #N/A
, Selon la condition. Cependant, si la valeur est #N/A
, La somme est nulle. C'est ainsi que fonctionne SUMIF()
: si aucune valeur ne correspond aux conditions, le résultat est 0
, Pas NULL
, pas #N/A
.
Avantages:
Par rapport à la solution =IF(ISNA(VLOOKUP(…)),"",VLOOKUP(…))
référencée dans la question, cette solution ne contient la partie VLOOKUP(…)
qu'une seule fois. Cela rend la formule plus courte et plus simple, et évite les erreurs qui se produisent lors de l'édition d'une seule des deux parties VLOOKUP(…)
.
Par rapport à la solution =IFERROR(VLOOKUP(…))
de l'autre réponse , les erreurs ne sont pas supprimées car cela rendrait leur détection et leur débogage plus difficiles. Seules les valeurs #N/A
Sont supprimées.
Un moyen plus simple de supprimer les messages d'erreur - de toute nature - consiste à utiliser le wrapper iferror
:
=iferror(vlookup(A1,Lookup!A:B,2,FALSE))
Je ne pense pas qu'il puisse y avoir un moyen plus simple que cela. De par sa conception, vlookup
ne devrait pas simplement retourner vide si la clé n'a pas été trouvée: cela ne se distinguerait pas de la situation où la clé a été trouvée mais l'entrée correspondante dans la deuxième colonne était vide. Une erreur doit être levée, puis c'est à l'utilisateur de la feuille de calcul de savoir comment la gérer.
=IFNA(VLOOKUP(...), "")
Je ne sais pas si cela a changé récemment, mais l'implémentation IFNA
prend en charge une seule liste de VLOOKUP
maintenant. Autrement dit, vous n'avez pas à l'envelopper dans un autre IF
.
Un avantage est que vous pouvez choisir ""
, 0
, NULL
, etc. comme valeur à afficher en cas d'échec.