web-dev-qa-db-fra.com

Comment comparer deux colonnes dans Excel (de feuilles différentes) et copier les valeurs d'une colonne correspondante si les deux premières colonnes correspondent?

J'essaie de comparer la colonne a de la feuille 1 avec la colonne a de la feuille 2, puis de copier les valeurs correspondantes dans la colonne b de la feuille 1 à la colonne b de la feuille 2 (où les valeurs de la colonne a correspondent). J'ai essayé de lire comment faire cela, mais je ne sais pas si je devrais essayer de créer une macro ou s'il existe un moyen plus simple de faire cela, peut-être VLOOKUP ou MATCH? Je ne connais pas vraiment le fonctionnement de ces fonctions.

De plus, si cela fait une différence, il y aura des valeurs répétées dans la colonne b de la feuille 2. 

Feuille 1

12AT8001    1
12AT8002    2
12AT8003    3
12AT8004    4
12AT8005    5
12AT8006    6

Feuille 2

12AT8001
12AT8001
12AT8001
12AT8001
12AT8001
12AT8002
12AT8002
12AT8002
12AT8002
12AT8002
12AT8003
12AT8003
12AT8003
12AT8003
12AT8003
7
kmcamara

Vlookup est bon si les valeurs de référence (colonne A, feuille 1) sont dans l'ordre croissant. Une autre option est Index et Match, qui peuvent être utilisés quelle que soit l'ordre (tant que les valeurs de la colonne a, feuille 1 sont uniques)

C’est ce que vous mettriez dans la colonne B de la feuille 2

=INDEX(Sheet1!A$1:B$6,MATCH(A1,Sheet1!A$1:A$6),2)

Définir Sheet1!A$1:B$6 et Sheet1!A$1:A$6 en tant que plages nommées le rend un peu plus convivial. 

5
MechEng

Comme kmcamara l’a découvert, c’est exactement le type de problème que VLOOKUP est censé résoudre, et utiliser vlookup est sans doute le moyen le plus simple de réaliser le travail.

En plus des trois paramètres pour lookup_value, table_range à rechercher et index_colonne pour les valeurs renvoyées, VLOOKUP utilise un quatrième argument facultatif appelé par la documentation Excel "range_lookup". 

En développant l'explication de deathApril, si cet argument est défini sur TRUE (ou 1) ou est omis, la plage de la table doit être triée par ordre croissant des valeurs de la première colonne de la plage pour que la fonction renvoie ce que l'on entend généralement par la valeur "correcte". Sous ce comportement par défaut, la fonction renverra une valeur basée sur une correspondance exacte, le cas échéant, ou une correspondance approximative si aucune correspondance exacte n'est trouvée. 

Si la correspondance est approximative, la valeur renvoyée par la fonction sera basée sur la prochaine valeur la plus grande inférieure à la valeur lookup_value. Par exemple, si "12AT8003" manque dans le tableau de la feuille 1, les formules de recherche de cette valeur dans la feuille 2 renverront "2", car "12AT8002" est la plus grande valeur de la colonne de recherche de la plage de tableau. que "12AT8003". (Le comportement par défaut de VLOOKUP est parfaitement logique si, par exemple, l'objectif est de rechercher des taux dans une table d'imposition.)

Toutefois, si le quatrième argument est défini sur FALSE (ou 0), VLOOKUP renvoie une valeur recherchée uniquement s'il existe une correspondance exacte et une valeur d'erreur égale à # N/A dans le cas contraire. Il est maintenant habituel d’envelopper un VLOOKUP exact dans une fonction IFERROR afin d’attraper le no-match sans problème. Avant l'introduction d'IFERROR, aucune correspondance n'avait été vérifiée avec une fonction IF à l'aide de la formule VLOOKUP une fois pour vérifier s'il y avait une correspondance et une fois pour renvoyer la valeur de correspondance réelle.

Bien que plus difficile à maîtriser au départ, la solution proposée par deusxmach1na est une variante d’un ensemble puissant d’alternatives à VLOOKUP, qui peut être utilisée pour renvoyer les valeurs d’une colonne ou d’une liste dans la colonne left de la colonne de recherche, afin Une correspondance exacte sur plus d'un critère est nécessaire, ou modifiée pour incorporer OR ainsi que des conditions de correspondance AND entre plusieurs critères.

Répétant la solution choisie par kcamara, la formule VLOOKUP pour résoudre ce problème serait la suivante:

   =VLOOKUP(A1,Sheet1!A$1:B$600,2,FALSE)
3
chuff

Faites une table de vérité et utilisez SOMMEPROD pour obtenir les valeurs. Copiez ceci dans la cellule B1 de la feuille Sheet2 et copiez-le autant que vous le souhaitez:
=SUMPRODUCT(--($A1 = Sheet1!$A:$A), Sheet1!$B:$B)
La partie qui crée la table de vérité est:
--($A1 = Sheet1!$A:$A)
Ceci retourne un tableau de 0 et de 1. 1 quand les valeurs correspondent et 0 quand elles ne le sont pas. Ensuite, la virgule qui suit fera essentiellement ce que j'appelle une multiplication de matrice "amusante" et renverra le résultat. J'ai peut-être mal compris votre question cependant: existe-t-il des valeurs en double dans la colonne A de la feuille Sheet1?

0
deusxmach1na