web-dev-qa-db-fra.com

Comment créer une jonction interne dans Excel (par exemple, à l'aide de VLOOKUP)

Est-il possible de joindre en interne deux feuilles de calcul Excel différentes à l'aide de VLOOKUP?

En SQL, je le ferais de cette façon:

SELECT id, name
FROM Sheet1
INNER JOIN Sheet2
ON Sheet1.id = Sheet2.id;

Sheet1:

+----+------+
| ID | Name |
+----+------+
|  1 | A    |
|  2 | B    |
|  3 | C    |
|  4 | D    |
+----+------+

Sheet2:

+----+-----+
| ID | Age |
+----+-----+
|  1 |  20 |
|  2 |  21 |
|  4 |  22 |
+----+-----+

Et le résultat serait:

+----+------+
| ID | Name |
+----+------+
|  1 | A    |
|  2 | B    |
|  4 | D    |
+----+------+

Comment puis-je faire cela dans VLOOKUP? Ou y a-t-il une meilleure façon de faire cela en dehors de VLOOKUP?

Merci.

7
PuggyLongLegs

Premièrement, obtenons une liste des valeurs présentes dans les deux tables. Si vous utilisez Excel 2010 ou une version ultérieure, dans la feuille 3 A2, indiquez la formule suivante:

=IFERROR(AGGREGATE(15,6,Sheet2!$A$1:$A$5000/(COUNTIF(Sheet1!$A$1:$A$5000,Sheet2!$A$1:$A$5000)>0),ROW(1:1)),"")

Si vous utilisez 2007 ou une version antérieure, utilisez cette formule de tableau:

=IFERROR(SMALL(IF(COUNTIF(Sheet1!$A$1:$A$5000,Sheet2!$A$1:$A$5000),Sheet2!$A$1:$A$5000),ROW(1:1)),"")

Étant une formule matricielle, copiez et collez dans la barre de formule puis appuyez sur Ctrl-Maj-Entrée au lieu de Entrée ou de Tabulation pour quitter le mode d'édition.

Ensuite, copiez autant de lignes que vous le souhaitez. Cela créera une liste d'ID qui sont dans les deux listes. Cela suppose que l'ID est un nombre et non du texte.

Ensuite, avec cette liste, nous utilisons vlookup:

=IF(A2<>"",VLOOKUP(A2,Sheet1!A:B,2,FALSE),"")

Cela renverra alors la valeur de la feuille 1 qui correspond.

 enter image description here

3
Scott Craner

Vous pouvez obtenir ce résultat à l'aide de Microsoft Query.

Tout d'abord, sélectionnez Data > From other sources > From Microsoft Query

 enter image description here

Puis sélectionnez "Excel Files *".

Dans la fenêtre "Sélectionner un classeur", vous devez sélectionner le classeur actuel.

Ensuite, dans les fenêtres de requête Wizard, sélectionnez sheet1 $ et sheet2 $ et cliquez sur le bouton ">" .  enter image description here

Cliquez sur Suivant pour ouvrir l'éditeur visuel de requête.

Cliquez sur le bouton SQL et collez cette requête:

SELECT `Sheet1$`.ID, `Sheet1$`.Name, `Sheet2$`.Age
FROM`Sheet1$`, `Sheet2$`
WHERE `Sheet1$`.ID = `Sheet2$`.ID

Enfin, fermez l'éditeur et placez la table où vous en avez besoin.

Le résultat devrait ressembler à ceci:  enter image description here

1
Seb