Kombinieren Sie 2 Excel-Tabellen in die man die Daten anfügen?
Ich habe 2 Tabellen auf 2 separate Blätter von MS-Excel-2007-Arbeitsmappe, wie unten:
===========================
no. f_name l_name
===========================
13 Little Timmy
1 John Doe
17 Baby Jessica
---------------------------
===========================
no. f_name l_name
===========================
1 john Tim
16 kyle joe
14 Baby katy
22 qbcd wsde
---------------------------
Haben beide die gleichen Spalten, aber Sie können unterschiedliche Daten.
Ich will verbinden, die Daten der beiden Tabellen vertikal, d.h. eine einzige Tabelle mit allen Daten in einem 3. separaten Blatt.
Wenn möglich, möchte ich eine weitere Spalte hinzufügen mit den Namen des Blattes, von wo aus die Reihe kam.
===================================
SheetName no. f_name l_name
===================================
Sheet1 13 Little Timmy
Sheet1 1 John Doe
Sheet1 17 Baby Jessica
Sheet2 1 john Tim
Sheet2 16 kyle joe
Sheet2 14 Baby katy
Sheet2 22 qbcd wsde
-----------------------------------
Kann es getan werden, ohne Verwendung von Makros?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Präambel
Einer Dritten Tabelle können die kombinierten Daten aus zwei Tabellen mit einigen native-Arbeitsblatt Formeln, aber halten die Dritte Tabelle richtig bemessen, wenn Zeilen Hinzugefügt oder gelöscht werden zu/aus den abhängigen Tabellen erfordern entweder eine manuelle Größenänderung oder VBA, die verfolgt diese änderungen und entspricht der Dritten Tabelle zu entsprechen. Ich habe enthalten Optionen zum hinzufügen die Quell-Tabelle Arbeitsblatt name sowie eine Tabelle zur Wartung von VBA-code am Ende dieser Antwort.
Sample-Daten-Tabellen
Habe ich die OP-sample-Daten zu konstruieren, die zwei Tabellen mit dem Namen (standardmäßig) Tabelle1 und Tabelle2 auf Arbeitsblätter, Tabelle1 und Tabelle2 jeweils. Ich habe absichtlich die Aufrechnung durch unterschiedliche Grade von jedem Arbeitsblatt die Zelle A1, um zu zeigen, einer strukturierten Tabelle, die Fähigkeit zur Bewältigung entweder sich selbst oder einem anderen strukturierten Tabelle in einer Formel als ein separates Element unabhängig von seiner position auf der übergeordneten Arbeitsblatt. Die Dritte Tabelle werden in ähnlicher Weise aufgebaut. Diese offsets sind für Demo-Zwecke nur, Sie sind nicht erforderlich.
Schritt 1: Erstellen der Dritten Tabelle
Build-Header für die Dritte Tabelle, und wählen Sie, die Zukunft Kopfzeile und mindestens eine Zeile unter ihm zu base Einfügen ► Tabellen ► Table-Befehl auf.
Ihre neue leere Dritten Tabelle auf dem Arbeitsblatt Tabelle3 sollte die folgenden ähneln.
Schritt 2: Füllen Sie die Dritte Tabelle
Starten Sie durch ausfüllen der ersten Zelle in der Dritten Tabelle DataBodyRange. In diesem Beispiel, das wäre Sheet3!C6. Geben oder fügen Sie die folgende Formel in C6 im Auge zu behalten, dass es auf der Basis der Standard-Tabelle Namen. Wenn Sie Ihre Tabellen-Namen entsprechend anpassen.
Den INDEX-Funktion erste ruft jeden verfügbaren Zeile aus "Tabelle1". Die konkrete Zeile, die zahlen sind abgeleitet mit der ZEILE-Funktion verweisen auf definierte Teile des strukturierten Tabelle zusammen mit ein wenig Mathematik. Wenn Tabelle1 läuft aus Zeilen, Datenbankabfrage übergeben wird, um eine zweite INDEX-Funktion verweisen auf Tabelle2 durch die WENNFEHLER-Funktion und seine sequentielle Zeilen abgerufen werden mit den ZEILEN-und REIHEN-Funktionen mit ein bisschen mehr Mathematik. Die SPALTE Funktion ist als
COLUMN(A:A)
die mit dem abrufen der ersten Spalte der referenzierten Tabelle, unabhängig davon, wo es auf dem Arbeitsblatt. Dies wird den Fortschritt, den zweiten, Dritten, usw. Spalte als Formel gefüllt.Apropos füllen rechts füllen Sie die Formel rechts auf E6. Sollten Sie etwas ähnlich dem folgenden.
Schritt 2.5: [optional] Fügen Sie die Quell-Tabelle parent-Arbeitsblatt name
Greifen Tabelle3 ' s Ziehpunkt (gekennzeichnet durch den Orangen Pfeil in der Beispiel-Bild unten) in der unteren rechten Ecke und ziehen Sie es rechts eine Spalte hinzufügen, um eine neue Spalte zu der Tabelle. Benennen Sie die header-label zu etwas besser geeignet als die Vorgabe. Ich habe Blatt als eine Spalte label.
Während Sie abrufen können die Arbeitsblatt-Namen der Quell-Tabelle direkt, die ZELLE-Funktion abrufen können, die vollständig qualifizierten Pfad, Dateiname und Tabellenblatt der jede Zelle in einem gespeicherten workbook1, wie man die optionalen info_types.
Setzen Sie die folgende Formel in Tabelle3 die leere Zelle in der ersten Zeile der neuen Spalte, die Sie gerade erstellt haben.
Komplette Auffüllen Tabelle3
Wenn Sie nicht Vorhaben, auf die Fertigstellung dieses kleinen Projekts mit einigen VBA zu pflegen Tabelle3 Dimensionen, wenn Zeilen Hinzugefügt oder gelöscht aus den beiden Quell-Tabellen dann einfach nehmen, Table3 die Größenänderung Griff und ziehen Sie Sie nach unten, bis Sie gesammelt haben, alle Daten aus beiden Tabellen. Siehe unten auf dieser Antwort für ein Beispiel-Bild der erwarteten Ergebnisse.
Wenn Sie planen, fügen Sie einige VBA, dann überspringen Sie die vollständige Bevölkerung von Tabelle3 und gehen Sie zum nächsten Schritt.
Schritt 3: Fügen Sie einige VBA zu pflegen, die Dritte Tabelle
Vollständigen Automatisierung ist ein Prozess, der, ausgelöst durch änderungen an einem Arbeitsblatt die Daten am besten behandelt, indem das Arbeitsblatt ist Worksheet_Change Ereignis-makro. Da gibt es die drei beteiligten Tabellen, die jeweils auf Ihr eigenes Arbeitsblatt, das Workbook_SheetChange-Ereignis-makro ist eine bessere Methode der Behandlung des change-events aus mehreren Arbeitsblättern.
Öffnen der VBE mit Alt+F11. Sobald Sie es öffnen, sehen Sie für die Projekt-Explorer in der oberen linken. Wenn es nicht sichtbar ist, Tippen Sie dann auf Strg+R, um es zu öffnen. Suchen Sie ThisWorkbook und mit der rechten Maustaste wählen Sie dann Code Anzeigen (oder klicken Sie einfach doppelt auf "DieseArbeitsmappe").
Fügen Sie den folgenden in den neuen Bereich mit dem Titel so etwas wie Mappe1 - DieseArbeitsmappe (Code).
Diese beiden Routinen, die umfangreiche Verwendung von Arbeitsblatt .CodeName Eigenschaft. Ein Arbeitsblatt ist CodeName ist Tabelle1, Tabelle2, Tabelle3, usw. und ändert sich nicht, wenn Sie ein Arbeitsblatt umbenannt. In der Tat, werden Sie selten geändert werden, auch von den fortgeschrittenen Benutzer. Sie wurden verwendet, so dass können Sie Ihre Arbeitsblätter, ohne den code ändern. Allerdings sollten Sie zeigen auf die richtigen Arbeitsblätter jetzt. Ändern Sie den code, wenn Sie Ihre Tabellen und Arbeitsblätter, die sind nicht gleich. Sehen Sie die einzelnen Arbeitsblatt-Kodenamen in Klammern neben Ihrem Arbeitsblatt .Name-Eigenschaft im Bild oben zeigt der VBE Project Explorer.
Tippen Sie auf Alt+Q, um zu Ihrer Arbeitsblätter. Alles, was übrig ist wäre die Oberfläche bevölkern Tabelle3 durch auswählen einer Zelle in "Tabelle1" oder Tabelle2 und vorgibt, es zu ändern durch Tippen auf F2, dann Enter↵. Ihre Ergebnisse sollten wie folgt Aussehen.
Wenn Sie gefolgt sind zusammen den ganzen Weg bis hier, dann sollten Sie haben eine ziemlich umfangreiche Sammlung-Tabelle, die aktiv kombiniert die Daten aus beiden Quellen 'Kind' Tabellen. Wenn Sie das VBA wie gut dann die Wartung der Dritte Sammlung-Tabelle ist praktisch nicht existent.
Umbenennen der Tabellen
Wenn Sie wählen, umbenennen oder alle drei Tabellen, die Arbeitsblatt-Formeln werden sofort und automatisch die änderungen. Wenn Sie sich entschieden haben, gehören die Workbook_SheetChange und begleitenden Helfer sub-Prozedur, die Sie haben zu gehen zurück in die ThisWorkbook-code-Blatt und verwenden, Finden & Ersetzen, um die entsprechenden änderungen vorzunehmen.
Beispiel-Arbeitsmappe
Habe ich den voll funktionsfähigen Beispiel-Arbeitsmappe zur Verfügung, die aus meinem public DropBox.
Table_Collection_w_Sheetname.xlsb
1 Der ZELLE-Funktion kann nur abrufen, wird der name Arbeitsblatt von einer Arbeitsmappe gespeichert. Wenn eine Arbeitsmappe nicht gespeichert wurde, dann hat er keinen mit dem Namen und der ZELLE-Funktion eine leere Zeichenfolge zurück, wenn gefragt, für die Dateinamen.
Aktivieren Sie die Office-Zwischenablage (Pfeil am rechten unteren Rand der Zwischenablage Abschnitt über die Ribbon-Registerkarte Home). Kopieren Sie beide reicht, dann verwenden Sie die Fügen Sie Alle - Befehl wie unten gezeigt.
Würden Sie noch brauchen, um füllen Sie den Namen des Blattes in einer extra Spalte die ersten aber, die getan werden kann, durch Doppelklick auf das Ausfüllkästchen.
Update
Erhalten die gleichen Ergebnisse mit Formeln versuchen, nach unten ausfüllen dieses für den Namen des Blattes:
und füllen dann nach unten und über diese Formel für die Werte in den Tabellen:
Paste Link
Befehl der link zu der kombinierten Tabelle der Quell-Tabelle. Dies würde automatisch aktualisiert, mit änderungen in der ursprünglichen Tabelle die Anzahl der Elemente in den Listen nicht ändern=IF(ROW()<(COUNTA(Sheet1!A:A)+1),INDEX(Sheet1!A:A,ROW()),IF(ROW()<COUNTA(Sheet1:Sheet2!A:A),INDEX(Sheet2!A:A,ROW()-COUNTA(Sheet1!A:A)+1),"")
lori_m ein wirklich guter Beitrag, den ich baute auf die mithilfe von Microsoft Excel-Tabellen und strukturierte Verweise.
Machen Sie zuerst eine Spalte in der output-Tabelle namens RowID enthält die Nummer der Zeile in der Tabelle, und verwenden Sie dann dieses, um zu füllen das Daten-Werte.
Es ist ein detaillierte Erklärung, wie dies funktioniert auf meinem blog, wie es war zu lang um Sie hier zu zitieren.
Leicht ändern Jeeped code.
Wenn Sie zufällig einen ähnlichen Ansatz, aber mit mehreren Tabellen (z.B. mehr als 10), dann ist es ziemlich umständlich, zu versuchen, manuell hinzufügen, jeder name jeder Tabelle. Das ist auch ein problem, wenn Sie ändern Sie den Namen der Tabellen, da die Namen fest verdrahtet sind, in VBA. Um zu vermeiden, zusätzliche arbeiten, betrachten Sie dieses:
So, vorausgesetzt, die folgenden:
Dann die Workbook_SheetChange Sub im obigen Beispiel könnte wie folgt Aussehen:
Bearbeiten. Die zweite routine wird dann so Aussehen:
Diese routine unterscheidet sich von der vorigen durch den Wegfall Fällen vorprogrammiert. Wenn es eine änderung registriert, die auf ein aktives Arbeitsblatt ist, dann wird jede Tabelle in das Arbeitsblatt, das geändert werden soll, wird der trigger update_Table Verfahren.
Im mit diesem code/Formel. funktioniert gut für meine Bedürfnisse, nur was ich gerne wissen würde ist, wie mache ich eine bessere Zelle, Formel so kann ich mit 3+ Tabellen als Referenz. zurzeit im, nur Schachteln ein paar WENNFEHLER Aussagen im WENNFEHLER
HTML:
Im auch mit der