Wie verbinde ich zwei Arbeitsblätter in Excel wie in SQL?


121

Ich habe zwei Arbeitsblätter in zwei verschiedenen Excel-Dateien. Beide enthalten eine Liste mit Namen, ID-Nummern und zugehörigen Daten. Eine ist eine Hauptliste, die allgemeine demografische Felder enthält, und die andere ist eine Liste, die nur Namen und ID sowie eine Adresse enthält. Diese Liste wurde von einem anderen Büro aus der Hauptliste gestrichen.

Ich möchte die zweite Liste verwenden, um die erste zu filtern. Zusätzlich möchte ich, dass die Ergebnisse neben den Adressfeldern aus dem zweiten Arbeitsblatt auch andere Felder aus dem Master-Arbeitsblatt enthalten. Ich weiß, wie ich das mit einem Datenbank-Inner-Join sehr einfach machen kann, aber ich bin mir nicht so sicher, wie ich das effizient in Excel machen kann. Wie können zwei Arbeitsblätter in Excel verknüpft werden? Bonuspunkte, um zu zeigen, wie man auch äußere Verknüpfungen ausführt, und ich würde es sehr bevorzugen, zu wissen, wie man dies ohne ein Makro ausführt.


1
Ich finde die folgende Seite sehr nützlich: randomwok.com/excel/how-to-use-index-match
Tommy Bravo

randomwok.com/excel/how-to-use-index-match => besonders die einfache "Erinnerung" am Ende:=INDEX ( Column_I_want_a_return_value_from , ( MATCH ( My_Lookup_Value , Column_I_want_to_Lookup_against , 0 ))
Tommy Bravo

Antworten:


157

Für 2007+ Verwendung Data> From Other Sources> From Microsoft Query:

  1. Wählen Sie Excel Fileund wählen Sie Ihre 1. Excel
  2. Spalten auswählen
    (wenn Sie keine Spaltenliste sehen, stellen Sie sicher, dass Options> markiert ist System Tables)
  3. Gehe zu Data> Connections> [wählen Sie die Verbindung gerade erstellt]> Properties> Definition>Command text

Sie können dies jetzt Command textals SQL bearbeiten . Ich bin nicht sicher, welche Syntax unterstützt wird, aber ich habe implizite Verknüpfungen, "innere Verknüpfung", "linke Verknüpfung" und Gewerkschaften ausprobiert, die alle funktionieren. Hier ist eine Beispielabfrage:

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
Gibt es eine Möglichkeit, das Hardcodieren des Pfads zu vermeiden? Würde der relative Pfad funktionieren?
Rekin

25
Als zusätzlichen Bonus bietet Microsoft Query allgemeine Steuerelemente im 16-Bit-Stil zum Öffnen der Excel-Datei und für Meldungsfelder. Auf diese Weise können Sie sich erinnern, als Sie jung waren. :-)
Edward Brey

Funktioniert das mit CSV-Dateien? Ich verwende MS Office Professional Plus 2010 und verstehe nicht, wie Sie Schritt 3 ausführen sollen. Beende ich das Dialogfeld in Schritt 2 als hängengeblieben? In meinem Dialogfeld "Verbindungen" gibt es keine Option "Neue Verbindung auswählen".
John Freeman

@JohnFreeman, weil Sie eine der verfügbaren Optionen entsprechend Ihren Anforderungen auswählen müssen (z. B. "Hinzufügen ...")
21.

3
Beachten Sie, dass möglicherweise ein Dialogfeld mit der Meldung "Diese Datenquelle enthält keine sichtbaren Tabellen" angezeigt wird, gefolgt von einem Dialogfeld "Abfrage-Assistent - Spalten auswählen". In diesem Dialogfeld möchten Sie auf die Schaltfläche "Optionen" klicken und dann das Kontrollkästchen "Systemtabellen" aktivieren, um die Daten anzuzeigen, die Sie abfragen möchten.
Tola Odejayi

11

Unterstützen Sie die akzeptierte Antwort. Ich möchte nur "Spalten auswählen" hervorheben (wenn Sie keine Spaltenliste sehen, überprüfen Sie bitte Optionen> Systemtabellen).

Sobald Sie die Excel-Datei ausgewählt haben, wird höchstwahrscheinlich eine this data source contains no visible tablesEingabeaufforderung angezeigt, und die verfügbaren Registerkarten und Spalten sind keine. Microsoft gab zu, dass dies ein Fehler ist, dass die Registerkarten in den Excel-Dateien als "Systemtabellen" behandelt werden und die Option für "Systemtabellen" standardmäßig nicht ausgewählt ist. Also keine Panik bei diesem Schritt, Sie müssen nur auf "Option" klicken und "System Tables" (Systemtabellen) markieren, dann sehen Sie die verfügbaren Spalten.


8

VLOOKUP und HLOOKUP können verwendet werden, um nach passenden Primärschlüsseln (vertikal oder horizontal gespeichert) zu suchen und Werte aus Attributspalten / -zeilen zurückzugeben.


Sehr nützlich für Arbeitsblätter in derselben Arbeitsmappe (aber ich finde INDEX + MATCH-Funktionen noch nützlicher), etwas komplizierter beim Aktualisieren von Daten aus geschlossenen externen Arbeitsmappen ...
7.

7

Sie können Microsoft Power Query verwenden, das für neuere Versionen von Excel verfügbar ist (ähnlich der akzeptierten Antwort, aber viel einfacher und einfacher). Power Query-Aufrufe verbinden "Zusammenführungen".

Am einfachsten ist es, Ihre 2 Excel-Tabellen als Excel-Tabellen zu haben. Wechseln Sie in Excel zur Registerkarte Power Query und klicken Sie auf die Schaltfläche "Aus Excel". Nachdem Sie beide Tabellen in Power Query importiert haben, wählen Sie eine aus und klicken Sie auf "Zusammenführen".


3
So viel einfacher als alle anderen vorgeschlagenen Optionen. Das sollte die Antwort sein! Power Query ist jetzt in Excel 2016 unter der Registerkarte Daten enthalten .
SliverNinja - MSFT

1
Ein weiteres Feature, das auf dem Mac 😕 nicht zu existieren scheint
juandesant

4

Aprillions Antwort mit Microsoft Query finde ich ausgezeichnet, aber es hat mich dazu inspiriert, Microsoft Access zu verwenden, um die Datenblätter zu verknüpfen, die ich viel einfacher fand.

Sie müssen natürlich MS Access installiert haben.

Schritte:

  • Erstellen Sie eine neue Access-Datenbank (oder verwenden Sie eine Arbeitsdatenbank).
  • Verwenden Get External DataSie diese Option, um Ihre Excel-Daten als neue Tabellen zu importieren.
  • RelationshipsZeigen Sie mit, wie Ihre Tabellen verknüpft sind.
  • Stellen Sie den Beziehungstyp so ein, dass er Ihren Wünschen entspricht (Darstellung des linken Joins usw.).
  • Erstellen Sie eine neue Abfrage, die Ihre Tabellen verknüpft.
  • Verwenden Sie External Data->Export to Excel, um Ihre Ergebnisse zu generieren.

Ich hätte das wirklich nicht tun können ohne Aprillions großartige Antwort.


Ich habe heute noch nie einen Zugang benutzt, aber das hat nur 10 Minuten gedauert. Ich habe die Excel-Spalten in 2 Tabellen kopiert / eingefügt, anstatt sie zu importieren.
Jiggunjer

3

Sie können keine SQL-Verknüpfungen für Excel-Tabellen in Excel durchführen. Das heißt, es gibt mehrere Möglichkeiten, um das zu erreichen, was Sie versuchen.

In Excel, wie Reuben sagt, sind VLOOKUPund die Formeln, die wahrscheinlich am besten funktionieren werden HLOOKUP. In beiden Fällen stimmen Sie mit einer eindeutigen Zeile überein und es wird der Wert der angegebenen Spalte \ Zeile nach links \ unten von der gefundenen ID zurückgegeben.

Wenn Sie der zweiten Liste nur ein paar zusätzliche Felder hinzufügen möchten, fügen Sie die Formeln der zweiten Liste hinzu. Wenn Sie eine "Outer Join" -Stiltabelle möchten, fügen Sie die VLOOKUPFormel der ersten Liste mit hinzu ISNA, um zu testen, ob die Suche gefunden wurde. Wenn Ihnen in der Excel-Hilfe nicht genügend Informationen zur Verwendung dieser Funktionen in Ihrer jeweiligen Instanz zur Verfügung stehen, teilen Sie uns dies mit.

Wenn Sie lieber SQL verwenden, verknüpfen Sie die Daten mit Ihrem Datenbankprogramm, erstellen Sie Ihre Abfrage und exportieren Sie die Ergebnisse zurück nach Excel. (In Access können Sie Excel-Arbeitsblätter oder benannte Bereiche als verknüpfte Tabelle importieren.)


12
Eigentlich können Sie - es heißt Microsoft Query
Aprillion

3

Bei XLTools.net haben wir eine gute Alternative für MS Query geschaffen, um insbesondere mit SQL Queries gegen Excel-Tabellen zu arbeiten. Es heißt XLTools SQL Queries . Es ist viel einfacher zu bedienen als MS Query und funktioniert wirklich gut, wenn Sie nur SQL erstellen und ausführen müssen - kein VBA, keine komplexen Manipulationen mit MS Query ...

Mit diesem Tool können Sie mithilfe des eingebetteten SQL-Editors eine beliebige SQL-Abfrage für Tabellen in Excel-Arbeitsmappen erstellen und diese sofort ausführen. Dabei können Sie das Ergebnis in ein neues oder ein vorhandenes Arbeitsblatt einfügen.

Sie können fast jeden Join-Typ verwenden, einschließlich LEFT OUTER JOIN (nur RIGHT OUTER JOIN und FULL OUTER JOIN werden nicht unterstützt).

Hier ist ein Beispiel:

XLTools SQL-Abfragen - Abfrage-Generator


2

Für Excel 2007-Benutzer: Daten> Aus anderen Quellen> Aus Microsoft Query> Navigieren Sie zur Excel-Datei

Laut diesem Artikel kann das Abfragen von XLS-Version 2003 zu "Diese Datenquelle enthält keine sichtbaren Tabellen" führen. Fehler, da Ihre Arbeitsblätter als SYSTEM-Tabelle behandelt werden. Überprüfen Sie daher die "Systemtabellen" in den Optionen des Dialogfelds "Abfrage-Assistent - Spalten auswählen", wenn Sie die Abfrage erstellen.

So definieren Sie Ihre Verknüpfung: Microsoft Query-Dialogfeld> Menü Tabelle> Verknüpfungen ...

Wählen Sie "Daten an Excel-Arbeitsblatt zurückgeben" im Microsoft Query-Dialogfeld> Menü "Datei", um Daten an Ihr ursprüngliches Excel-Arbeitsblatt zurückzugeben.


0

Wenn Sie mit Datenbanken vertraut sind, können Sie beide Arbeitsblätter mit SQL Server als Verbindungsserver verbinden und dann mit T-SQL Ihre Back-End-Daten bearbeiten. Schließen Sie dann ab, indem Sie Excel wieder mit SQL verbinden und die Daten in eine Tabelle (regulär oder Pivot) ziehen. Sie können auch Powerpivot verwenden. Es ermöglicht Verknüpfungen zwischen beliebigen Datenbankquellen, einschließlich Excel, das als flache Datenbanken verwendet wird.


2
Sie haben Recht, aber die erste Frage basiert auf der Verwendung einer Tabelle (oder von zwei), um eine Datenbankfunktion auszuführen. Ich bin mir also nicht sicher, wie die Aufgabe wirklich effizient ausgeführt werden kann.
Dav

0

Auf der Suche nach dem gleichen Problem stieß ich auf RDBMerge , eine meiner Meinung nach benutzerfreundliche Methode zum Zusammenführen von Daten aus mehreren Excel-Arbeitsmappen, CSV- und XML-Dateien in einer zusammenfassenden Arbeitsmappe.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.