2012-05-04 16:20:11 +0000 2012-05-04 16:20:11 +0000
123
123

Comment puis-je joindre deux feuilles de calcul dans Excel comme je le ferais dans SQL ?

J'ai deux feuilles de calcul dans deux fichiers Excel différents. Elles contiennent toutes deux une liste de noms, de numéros d'identification et de données associées. L'une est une liste principale qui comprend des champs démographiques généraux, et l'autre est une liste qui ne comprend que le nom et le numéro d'identification, ainsi qu'une adresse. Cette liste a été réduite de la liste principale par un autre bureau.

Je veux utiliser la deuxième liste pour filtrer la première. En outre, je veux que les résultats incluent d'autres champs de la liste principale à côté des champs d'adresse de la deuxième liste. Je sais comment je pourrais faire cela très facilement avec une jointure interne à la base de données, mais je suis moins clair sur la façon de faire cela efficacement dans Excel. Comment joindre deux feuilles de calcul dans Excel ? Des points bonus pour montrer comment faire des jointures externes également, et je préférerais grandement savoir comment le faire sans avoir besoin d'une macro.

Réponses (10)

158
158
158
2012-05-07 09:37:24 +0000

Pour 2007+ utilisez Data > From Other Sources > From Microsoft Query :

  1. choisissez Excel File et sélectionnez votre 1er excel
  2. choisissez les colonnes (si vous ne voyez pas de liste de colonnes, assurez-vous de cocher Options > System Tables)
  3. allez sur Data > Connections > [choisissez la connexion qui vient d'être créée] > Properties > Definition > Command text

Vous pouvez maintenant éditer ce Command text en SQL. Je ne sais pas quelle syntaxe est supportée, mais j'ai essayé les jointures implicites, “inner join”, “left join” et les unions qui fonctionnent toutes. Voici un exemple de requête :

SELECT *
FROM `C:\Users\Peter\Documents\Excel-to-excel\Source_1.xlsx`.`Sheet1$` a
LEFT JOIN `C:\Users\Peter\Documents\Excel-to-excel\Source_2.xlsx`.`Sheet1$` b
ON a.col2 = b.col2
11
11
11
2013-12-09 18:20:43 +0000

Soutenez la réponse acceptée. Je veux juste insister sur “choisissez les colonnes (si vous ne voyez pas de liste de colonnes, assurez-vous de cocher les options > Tableaux système)”

Une fois que vous avez sélectionné le fichier excel, il est très probable que vous verrez this data source contains no visible tables prompt, et que les onglets et colonnes disponibles n'en soient pas. Microsoft admet que c'est un bogue que les onglets des fichiers excel sont traités comme des “Tableaux système”, et l'option “Tableaux système” n'est pas sélectionnée par défaut. Donc pas de panique à cette étape, il suffit de cliquer sur “option” et de cocher “System Tables”, puis vous voyez les colonnes disponibles.

9
9
9
2012-05-04 16:22:05 +0000

VLOOKUP et HLOOKUP peuvent être utilisés pour rechercher les clés primaires correspondantes (stockées verticalement ou horizontalement) et renvoyer les valeurs des colonnes/lignes “attributs”.

7
7
7
2017-05-17 14:09:42 +0000

Vous pouvez utiliser Microsoft Power Query, disponible pour les versions plus récentes d'Excel (similaire à la réponse acceptée, mais beaucoup plus simple et facile). Les appels de Power Query fusionnent.

Le plus simple est d'utiliser vos deux feuilles Excel comme des tableaux Excel. Ensuite, dans Excel, allez à l'onglet du ruban Power Query et cliquez sur le bouton “From Excel”. Une fois que vous avez importé les deux tableaux dans Power Query, sélectionnez-en un et cliquez sur “Fusionner”.

4
4
4
2016-02-12 11:00:43 +0000

Bien que je pense que la réponse d'Aprillion en utilisant Microsoft Query est excellente, elle m'a inspiré l'utilisation de Microsoft Access pour joindre les fiches techniques que j'ai trouvé beaucoup plus facile.

Vous devez avoir MS Access installé bien sûr.

Étapes :

  • Créer une nouvelle base de données Access (ou utiliser une base de données à gratter).
  • Utiliser Get External Data pour importer vos données Excel sous forme de nouveaux tableaux.
  • Utilisez Relationships pour montrer comment vos tables sont jointes.
  • Réglez le type de relation pour qu'il corresponde à ce que vous voulez (représentant la jointure à gauche, etc.)
  • Créez une nouvelle requête qui joint vos tables.
  • Utilisez External Data->Export to Excel pour générer vos résultats.

Je n'aurais vraiment pas pu faire cela sans la super réponse d'Aprillion.

3
3
3
2014-07-04 22:25:25 +0000

A XLTools.net, nous avons créé une bonne alternative pour que MS Query fonctionne surtout avec des requêtes SQL contre des tableaux Excel. Elle s'appelle XLTools SQL Queries . Il est beaucoup plus facile à utiliser que MS Query et fonctionne très bien si vous avez juste besoin de créer et d'exécuter du SQL - pas de VBA, pas de manipulations complexes avec MS Query…

Avec cet outil vous pouvez créer n'importe quelle requête SQL contre des tables dans un ou plusieurs classeurs Excel en utilisant l'éditeur SQL intégré et l'exécuter immédiatement avec la possibilité de mettre le résultat sur une nouvelle feuille de calcul ou sur une feuille existante. Vous pouvez utiliser presque tous les types de joint, y compris le joint extérieur gauche (seuls le joint extérieur droit et le joint extérieur complet ne sont pas pris en charge). Voici un exemple :

3
3
3
2012-05-04 17:29:37 +0000

Vous ne pouvez pas préformer des jointures de style SQL sur des tableaux Excel à partir d'Excel. Cela dit, il existe de multiples façons d'accomplir ce que vous essayez de faire.

Dans Excel, comme le dit Reuben, les formules qui fonctionneront probablement le mieux sont VLOOKUP et HLOOKUP. Dans les deux cas, vous faites une correspondance sur une ligne unique et elle renvoie la valeur de la colonne donnée à gauche de l'identifiant trouvé.

Si vous voulez seulement ajouter quelques champs supplémentaires à la deuxième liste, alors ajoutez les formules à la deuxième liste. Si vous voulez une table de style “jointure extérieure”, ajoutez la formule VLOOKUP à la première liste avec ISNA pour tester si la recherche a été trouvée. Si l'aide d'Excel ne vous donne pas suffisamment de détails sur la façon de les utiliser dans votre cas particulier, faites-le nous savoir.

Si vous préférez utiliser SQL, reliez les données à votre programme de base de données, créez votre requête et exportez les résultats vers Excel. (Dans Access, vous pouvez importer des feuilles de calcul Excel ou des plages nommées dans un tableau lié).

2
2
2
2013-07-16 02:41:41 +0000

Pour les utilisateurs d'Excel 2007 : Données > D'autres sources > De Microsoft Query > naviguer vers le fichier Excel

Selon cet article , une interrogation à partir de la version 2003 de XLS peut entraîner une erreur “Cette source de données ne contient aucun tableau visible” car vos feuilles de calcul sont traitées comme un tableau SYSTEM. Vérifiez donc les options de la boîte de dialogue “Assistant de requête – Choisir les colonnes” lorsque vous créez la requête.

Pour définir votre jointure : Dialogue Microsoft Query > Menu Table > Jointures…

Pour retourner les données sur votre feuille Excel originale, choisissez “Return data to Excel Sheet” dans le dialogue Microsoft Query > Menu File.

0
0
0
2016-05-25 17:19:06 +0000

En cherchant le même problème, je suis tombé sur RDBMerge , qui est à mon avis un moyen convivial de fusionner des données provenant de plusieurs classeurs Excel, de fichiers csv et xml dans un classeur de synthèse.

0
0
0
2012-05-04 16:44:30 +0000

Si vous êtes suffisamment familier avec les bases de données, vous pouvez utiliser SQL Server pour connecter les deux feuilles de calcul en tant que serveurs liés, puis utiliser T-SQL pour effectuer votre travail de données en arrière-plan. Terminez ensuite en reconnectant Excel à SQL et en tirant les données dans un tableau (régulier ou pivot). Vous pouvez également envisager d'utiliser Powerpivot ; il permettra de relier entre elles toutes les sources de données, y compris Excel utilisé comme base de données plate.