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") ;

3voto

mischab1 Points 1232

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

Dans Excel, comme Reuben l'a dit, les formules qui fonctionneront probablement le mieux sont les suivantes VLOOKUP y HLOOKUP . Dans les deux cas, la correspondance porte sur une ligne unique et renvoie la valeur de la colonne donnée. \row à gauche \down à partir de l'identifiant trouvé.

Si vous voulez seulement ajouter quelques champs supplémentaires à la deuxième liste, ajoutez les formules à la deuxième liste. Si vous voulez un tableau de type "jointure externe", ajoutez les formules de la première liste. 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 d'utiliser ces fonctions 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 en tant que tableau lié).

12 votes

En fait, vous pouvez - ça s'appelle Microsoft Query

3voto

Peter Liapin Points 121

Chez XLTools.net, nous avons créé une bonne alternative à MS Query pour travailler notamment avec des requêtes SQL contre des tableaux Excel. Elle s'appelle Requêtes SQL XLTools . 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 les tables du ou des classeurs Excel en utilisant l'éditeur SQL intégré et l'exécuter immédiatement avec l'option de mettre le résultat sur une nouvelle feuille de calcul ou une feuille existante.

Vous pouvez utiliser presque tous les types de jointure, y compris la LEFT OUTER JOIN (seules les RIGHT OUTER JOIN et FULL OUTER JOIN ne sont pas prises en charge).

Voici un exemple :

XLTools SQL Queries - Query Builder

2voto

clarkttfu Points 141

Pour les utilisateurs d'Excel 2007 : Data > From Other Sources > From Microsoft Query > naviguer vers le fichier Excel

Selon cet article Dans le cas d'une requête à partir de XLS version 2003, l'erreur "Cette source de données ne contient pas de tables visibles" peut se produire car vos feuilles de travail sont traitées comme des tables SYSTEM. Vérifiez donc les "tables système" dans les options de la boîte de dialogue "Query Wizard -- Choose Columns" lorsque vous créez la requête.

Pour définir votre jointure : Dialogue Microsoft Query > menu Table > Joints...

Pour retourner les données dans votre feuille Excel d'origine, choisissez "Retourner les données dans la feuille Excel" dans la boîte de dialogue Microsoft Query > menu Fichier.

0voto

dav Points 9456

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 le travail sur les données en arrière-plan. Terminez ensuite en reconnectant Excel à SQL et en extrayant les données dans un tableau (normal ou croisé dynamique). Vous pouvez également envisager d'utiliser Powerpivot, qui permet d'effectuer des jointures entre toutes les sources de données, y compris Excel utilisé comme base de données plate.

2 votes

Vous avez raison, mais la question initiale est basée sur l'utilisation d'une feuille de calcul (ou deux) pour effectuer une fonction de base de données, et je ne suis pas sûr qu'il existe un moyen vraiment efficace d'accomplir cette tâche.

0voto

lalthomas Points 307

En cherchant le même problème, je suis tombé sur RDBMerge Je pense qu'il s'agit d'un moyen convivial de fusionner les données de plusieurs classeurs Excel, de fichiers csv et xml dans un classeur récapitulatif.

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