141 votes

Comment joindre deux feuilles de calcul dans Excel comme je le ferais en 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 à partir 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 comprennent d'autres champs de la feuille de calcul principale ainsi que les champs d'adresse de la deuxième feuille de calcul. Je sais comment je pourrais faire cela très facilement avec une jointure interne de base de données, mais je suis moins clair sur la façon de le faire efficacement dans Excel. Comment joindre deux feuilles de calcul dans Excel ? Je préférerais nettement savoir comment le faire sans avoir besoin d'une macro.

1 votes

Je trouve la page suivante très utile : randomwok.com/excel/how-to-use-index-match

0 votes

Randomwok.com/excel/how-to-use-index-match => surtout le "rappel" facile à la fin : =INDEX ( Column_I_want_a_return_value_from , ( MATCH ( My_Lookup_Value , Column_I_want_to_Lookup_against , 0 ))

1 votes

Un peu de Python fera aussi l'affaire import pandas as pd; file1 = pd.read_csv("in_1.csv", sep=","); # alternatively read_excel() file2 = pd.read_csv("in_2.csv", sep=";"); merged = file1.merge(file2, left_on='ID', right_on='OTHER_ID', how='outer'); merged.to_excel("out.xlsx") ;

162voto

Larry Watanabe Points 7305

Pour les années 2007 et suivantes, utilisez Data > From Other Sources > From Microsoft Query :

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

Vous pouvez maintenant modifier cette Command text comme SQL. Je ne suis pas sûr de la syntaxe supportée, mais j'ai essayé les jointures implicites, la "jointure interne", la "jointure gauche" 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

1 votes

Existe-t-il un moyen d'éviter de coder en dur le chemin d'accès ? Un chemin relatif fonctionnerait-il ?

35 votes

En prime, Microsoft Query vous permet d'expérimenter les contrôles communs de style 16 bits pour l'ouverture du fichier Excel et pour les boîtes de messages. Vous pourrez ainsi vous souvenir de votre jeunesse :-)

0 votes

Cela fonctionne-t-il avec les fichiers CSV ? J'utilise MS Office Professional Plus 2010 et je ne vois pas comment suivre l'étape 3 - dois-je laisser la boîte de dialogue de l'étape 2 en suspens ? Il n'y a pas de "choisir votre nouvelle connexion" dans ma boîte de dialogue Connexions.

14voto

Ben Lin Points 303

Soutenez la réponse acceptée. Je veux juste insister sur "choisir les colonnes (si vous ne voyez pas de liste de colonnes, assurez-vous de cocher Options > System Tables)".

Une fois que vous avez sélectionné le fichier excel, vous verrez très probablement this data source contains no visible tables et les onglets et colonnes disponibles sont inexistants. Microsoft admis que c'est un bug que les onglets des fichiers excel sont traités comme des "System Tables", et que l'option "System Tables" n'est pas sélectionnée par défaut. Ne paniquez donc pas à cette étape, il vous suffit de cliquer sur "option" et de cocher "System Tables", puis vous voyez les colonnes disponibles.

11voto

Reuben L. Points 1022

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/rangs "attributs".

0 votes

Très utile pour les feuilles d'un même classeur (mais je trouve les fonctions INDEX+MATCH encore plus utiles), un peu plus compliqué pour mettre à jour les données de classeurs externes fermés...

11voto

anotherfred Points 216

Vous pouvez utiliser Microsoft Power Query, disponible pour les versions les plus récentes d'Excel (similaire à la réponse acceptée, mais beaucoup plus simple et facile). Power Query appelle les jointures des "fusions".

Le moyen le plus simple est de faire en sorte que vos deux feuilles Excel soient des tableaux Excel. Ensuite, dans Excel, allez dans 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'.

3 votes

C'est tellement plus facile que toutes les autres options proposées. Ce devrait être la solution ! Power Query est maintenant inclus dans Excel 2016 sous la rubrique Données onglet.

3 votes

Une autre fonctionnalité qui ne semble pas exister sur le Mac

0 votes

Cela m'a aidé. Merci.

5voto

MattSlay Points 1392

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

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

Des pas :

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

Je n'aurais vraiment pas pu le faire sans l'excellente réponse d'Aprillion.

1 votes

Je n'avais jamais utilisé l'accès avant aujourd'hui, mais cela ne m'a pris que 10 minutes. J'ai copié/collé les colonnes excel dans 2 tableaux au lieu de les importer.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X