web-dev-qa-db-fra.com

Joignez deux feuilles de calcul sur une colonne commune dans Excel ou OpenOffice

J'ai deux fichiers CSV avec une colonne commune et je souhaite "joindre" les tables ensemble sur la colonne commune.

Par exemple: joindre 'A' avec 'B' est égal à 'Résultat'. Si une table a une valeur de clé qui n'existe pas dans l'autre table, elle est laissée vierge.

== Table A ==        == Table B ==        == Table result ==
Name  ,Age           Name  ,Sex           Name ,Age ,Sex
Bob   ,37     +      Bob   ,Male     =>   Bob  ,37  ,Male
Steve ,12            Steve ,Male          Steve,12  ,Male
Kate  , 7                                 Kate , 7  , 
                     Sara  ,Female        Sara ,    ,Female 

Je sais comment faire cela avec une base de données SQL mais je ne l'ai jamais fait avec "Excel" ou "OpenOffice.org Calc"

Suggestions?

27
Steven smethurst

Dans Excel, vlookup peut faire une partie de ce que vous demandez. Plus précisément, vous pouvez utiliser vlookup pour effectuer une jointure externe gauche ou droite, mais pas une jointure externe complète (comme le résultat de votre tableau).

Pour effectuer une jointure externe pour votre exemple ci-dessus, ajoutez ce qui suit au C2 du "Tableau B" (ou copiez le "Tableau B", puis procédez comme suit):

=vlookup(
    a2, # the cell value from the current table to look up in the other table
    table_a!$1:$174832718, # the other table
                           # don't manually type this--select the entire 
                           # other table while the cursor is editing this
                           # cell, then add the "$"s--Excel doesn't
                           # automatically add them
                           # (the syntax here is for different sheets in
                           # the same file, but Excel will fill this in 
                           # correctly for different files as well)
    2, # the column to get from the other table (A=1, B=2, etc.)
    FALSE) # FALSE=only get exact matches TRUE=find approx. matches if no exact match

Vous devriez ensuite être en mesure de le développer pour traiter plusieurs lignes et plusieurs colonnes importées.

32
robert

Dans Excel, vous utilisez VLOOKUP pour cela.
Supposons que les données du tableau A figurent dans les colonnes A et B dans Excel.
Et les données du tableau B figurent dans les colonnes E et F.
Maintenant, allez à la première ligne de la colonne C et entrez:

=VLOOKUP(A:A,E:F,2,FALSE) 

Cela lui dit d'essayer de faire correspondre la colonne A avec la colonne E, et de saisir tout ce qui se trouve dans la 2e colonne près de l'endroit où nous l'avons trouvé et de le placer dans la colonne C.
Remplissez maintenant automatiquement le reste des lignes de la colonne C pour faire correspondre le reste des données.

9
BeemerGuy

Si vous pouvez utiliser Excel, il existe une fonction de requête à partir de fichiers Excel:

  • Définir le nom de la table principale - Table A (onglet Formules -> Définir le nom)
  • Définir le nom de la table secondaire - Table B
  • Accédez à l'onglet Données, sélectionnez "À partir d'autres sources" et, dans la liste déroulante, sélectionnez "À partir de Microsoft Query"
  • Sélectionnez votre fichier CSV et confirmez que vous souhaitez fusionner les colonnes manuellement
  • Dans la fenêtre suivante "Requête à partir de fichiers Excel", faites glisser et déposez la colonne Nom du tableau A dans la colonne Nom du tableau B - un lien entre ces colonnes sera créé
  • Allez dans le menu Fichier, cliquez sur "Retourner les données vers MS Office Excel", une boîte de dialogue Importer les données apparaîtra
  • Sélectionnez la feuille dans laquelle vous souhaitez que les données correspondantes soient importées
  • Cliquez sur OK - vous devriez voir les données correspondantes avec les colonnes des deux tables

Ou si cela ne vous dérange pas de télécharger vos fichiers CSV sur un service en ligne, vous pouvez utiliser par exemple http://www.gridoc.com/join-tables et rejoindre les feuilles de calcul par glisser-déposer (Avertissement: Je suis l'auteur de l'outil).

J'espère que cela t'aides.

2
endriju