Supposons que j'ai des données dans Excel (et non dans une vraie base de données). Dans une feuille, j'ai des données, où une colonne fonctionne comme l'ID, et je me suis assuré que les valeurs de cette colonne sont uniques. Dans une autre feuille, j'ai également quelques données, encore une fois avec une colonne qui peut être considérée comme un ID, et elle est également unique. Si la ligne N de la feuille 1 a une certaine valeur et que la ligne M de la feuille 2 a la même valeur, je suis sûr que la ligne N et la ligne M décrivent le même objet du monde réel.
Ce que je demande: comment obtenir l'équivalent d'une jointure externe complète sans écrire de macros? Les formules et toutes les fonctions accessibles via le ruban sont OK.
Un petit exemple de "lecture de données":
Feuille 1:
Dostoyevski Russia
Pushkin Russia
Shelley England
Flaubert France
Hugo France
Eichendorff Germany
Byron England
Zola France
Fiche 2:
Shelley Percy Bysshe
Eichendorff Josef Freiherr Von
Flaubert Gustave
Byron Lord
Keller Gottfried
Dostoyevski Fyodor
Zola Emile
Balzac Honoré de
Sortie souhaitée (le tri n'est pas important):
Dostoyevski Russia Fyodor
Pushkin Russia
Shelley England Percy Bysshe
Flaubert France Gustave
Hugo France
Eichendorff Germany Josef Freiherr von
Byron England Lord
Zola France Emile
Keller Gottfried
Balzac Honoré de
À tous ceux qui sont horrifiés par ce scénario: je sais que c'est la mauvaise façon de le faire. Si j'ai le choix, je n'utiliserais pas Excel pour cela. Cependant, il existe suffisamment de situations où une solution pragmatique est nécessaire, la statistique et une meilleure solution (du point de vue informatique) ne peuvent pas être appliquées.
la source
Réponses:
Approche facile - opérations Excel standard
Tout d'abord, copiez / collez les deux colonnes clés des deux tables dans une seule nouvelle feuille en une seule colonne.
Utilisez le "Supprimer les doublons" pour obtenir la liste unique de toutes vos clés uniques.
Ensuite, ajoutez deux colonnes (dans ce cas), une pour chacune de vos colonnes de données dans chaque table. Je vous recommande également d'utiliser le format comme option de tableau car cela rend vos formules beaucoup plus agréables. À l'aide de vlookup, utilisez la formule suivante:
Où
Sheet4!A:B
représente la table de données de la table source pour chaque valeur respective. L'IFERROR empêche les résultats laids # N / A qui apparaissent lorsque vlookup échoue et dans ce cas, renvoie une cellule vide.Cela vous donne votre tableau résultant.
Feuille3:
Sheet4:
Données de résultat:
Formules de résultat ( Ctrl+ ~basculera ceci):
Requête SQL intégrée
Vous pouvez également le faire avec la requête SQL intégrée. C'est ... beaucoup moins convivial, mais ce sera peut-être un meilleur cas d'utilisation. Cela nécessitera probablement que vous ayez formaté vos données "source" sous forme de tableaux.
La partie "créer une soustraction de souscription puis l'ajouter en tant qu'union" est plus compliquée.
Revenez à la première jointure externe que vous avez créée. Modifiez manuellement le SQL et
Union
en basPas pour les faibles de cœur. Mais si vous voulez avoir une grande chance de voir des parties d'Office non mises à jour aussi longtemps que vous pourriez avoir été en vie, c'est une grande chance.
la source
Comme solution alternative, puis-je suggérer Power Query ? C'est un complément Excel gratuit de Microsoft pour effectuer exactement ce genre de chose. Sa fonctionnalité sera également directement incluse dans Excel 2016, donc elle est à l'épreuve du temps.
Quoi qu'il en soit, avec Power Query, les étapes sont assez simples:
La bonne chose à ce sujet est qu'une fois que vous avez configuré cela, si vous apportez des modifications à vos tableaux de données de base, vous cliquez simplement sur Données> Tout actualiser et votre feuille de résultats Power Query est également mise à jour.
la source
Un moyen rapide de semi-simuler une (jointure externe) consiste à prendre votre deuxième liste et à la coller directement sous votre première liste, c'est-à-dire que vos (clés primaires) sont toutes dans la même colonne (principale). Ensuite, triez cette colonne principale, vous vous retrouverez avec une liste entrelacée, puis effectuez une équation IF transposée (le superutilisateur gâche la vue de la disposition du tableau ..):
listA listB
sam blue tim 32874 tim red mary 5710 chris green gustav 047 fred blue
mary black
copier / coller / trier, le résultat ressemble à ceci: AB chris vert fred bleu gustav 047 mary 5710 mary noir sam bleu tim 32874 tim rouge
alors formule pour la cellule c1: (c1) = if (A1 = A2, B2)
le résultat ressemble à ceci:
ABC chris vert FAUX fred bleu bleu FAUX gustav 047 FAUX marie 5710 noir marie noir FAUX sam bleu FAUX tim 32874 rouge tim rouge FAUX
Triez C pour vous débarrasser des faux, etc. C'est une version de base de l'idée, il suffit de la développer si plus de données sont nécessaires. -wag770310
la source