Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1228to1232
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Export aus mehreren Tabellen

Export aus mehreren Tabellen
Waldemar
Hallo Forum,
ich habe ein recht komplexes Problem und würde mich freuen, wenn mir jmd eine Hilfestellung geben würde. Ich habe drei Tabellen in einem Workbook und möchte mehrere Spalten aus der 1. Tabelle und eine bestimmte Spalte aus der 3. Tabelle, die ich aber nur über die 2. Tabelle identifizieren kann, in einen neues Excel-Dokument exportieren.
Im Anhang findet Sie eine Beispieldatei, die mein Problem darstellt.
Ich beschreibe mein Problem in mehreren Schritten:
1.:
Im 1. Worksheet "Tabelle1" befindet sich eine der 3 Tabellen mit den Quelldaten. Hier selektiere ich bspw. anhand Spalte "Test2" z.B. "abc".
2.:
Wenn in Spalte Test5 etwas steht, dann soll in die 1. Spalte des Exportdokuments die Überschrift dieser Spalte geschrieben werden (also Test5) und in die 2. Spalte des Exportdokuments der Inhalt der Zelle in Spalte Test5.
3.:
Wenn in Spalte Test6 etwas steht, dann soll in die 1. Spalte des Exportdokuments die Überschrift der Spalte geschreiben werden (also Test6) und in die 2. Spalte des Exportdokuments der Inhalt der Zelle in Spalte Test6.
4.:
Anhand des Inhalts der 2. Spalte (Referenz) des Exportdokuments soll das Makro schauen was in Spalte Test2 steht und den Inhalt dann jeweils in die 3. Spalte des Exportdokuments schreiben.
5.:
Anhand des Inhalts der 2. Spalte (Referenz) des Exportdokuments soll das Makro schauen, ob in der Spalte Test8 etwas steht, wenn ja dann schreibe den Inhalt von Spalte Test8 in die 4. Spalte des Ausgabedokuments.
6.:
Anhand des Inhalts der 4. Spalte (Referenz) des Exportdokuments soll das Makro schauen, ob in der Spalte Test9 etwas steht, wenn ja, dann schreibe den Inhalt von Spalte Test9 in die 5. Spalte des Ausgabedokuments.
7.:
Anhand des Inhalts der 5. Spalte (Referenz) des Exportdokuments soll das Makro in Tabelle2 diesen Inhalt mit der 1. Spalte in Tabelle2 (Ref1) vergleichen, wenn ein gleiches Objekt gefunden wird, soll das Makro sich den Inhalt des letztens Eintrages in der aktuellen Zeile merken und in Tabelle3 den gemerkten Eintrag suchen. Falls der Eintrag gefunden wird, soll in der selben Zeile der Inhalt der Spalte Frequency in die Spalte 6 des Exportsdokuments geschrieben werden, aber an der Stelle, wo die Ausgangsreferenz der Spalte 5 steht.
8.:
Anhand der Spalte 5 des Exportdokumentes sollen alle Duplikate entfernt werden.
Ich hoffe, das mir jemand bei diesem Problem helfen kann, weil es für meine bescheidenen VBA-Kenntnisse einfach zu komplex ist.
Habe jetzt folgenden Code, der mir Punkte 1 bis 5 ab arbeitet:
Code:

Sub Generate_Export()
Dim wb As Workbook, i As Long, c As Long
Dim Zeile As Variant
Dim sFileName As String
Dim oQuelle As Range, gQuelle As Range, rngQuelle As Range, rQuelle As Range, iQuelle As Range,  _
_
uQuelle As Range
Dim r As Range, lngZeile As Long
Dim lngLetzte As Long
Set wb = Workbooks.Add
Set rQuelle = ThisWorkbook.Worksheets("Tabelle1").Range("Test_Table").Columns(2)
Set iQuelle = ThisWorkbook.Worksheets("Tabelle1").Range("Test_Table").Columns(5)
Set uQuelle = ThisWorkbook.Worksheets("Tabelle1").Range("Test_Table").Columns(6)
Set gQuelle = ThisWorkbook.Worksheets("Tabelle1").Range("Test_Table").Columns(8)
Set oQuelle = ThisWorkbook.Worksheets("Tabelle1").Range("Test_Table").Columns(9)
Set rngQuelle = Union(rQuelle, iQuelle, uQuelle, gQuelle, oQuelle)
With wb.Worksheets(1)
rngQuelle.Copy _
Destination:=.Cells(2, 2)
For i = 1 To rngQuelle.Columns.Count
.Columns(i + 1).EntireColumn.ColumnWidth = rngQuelle.Columns(i).ColumnWidth
Next i
lngZeile = 2
For Each r In rngQuelle.Rows
.Rows(lngZeile).EntireRow.RowHeight = r.RowHeight
lngZeile = lngZeile + 1
Next r
.ListObjects.Add(xlSrcRange, .UsedRange, , xlYes).Name = "Import_Data"
.ListObjects("Import_Data").TableStyle = ""
wb.Worksheets(1).Name = "Import_Data"
End With
sFileName = Application.GetSaveAsFilename
wb.SaveAs sFileName
wb.Close
Set rngQuelle = Nothing
Set wb = Nothing
End 

Sub
Das Problem ist nur das er mir die Daten aus Spalte Test6 nicht unter die Daten der Spalte  _
Test5 schreibt. Zusätzlich gibt er mir alles aus und nicht nur das, was ich vorher gefiltert  _
habe:(
Viele Grüße,
Waldemar
Die Beispiel Datei: https://www.herber.de/bbs/ _
_
user/76773.xlsm


		

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Export aus mehreren Tabellen
27.09.2011 22:16:58
fcs
Hallo Waldemar,
da du die Struktur der Quelle komplett aufbrichts (Daten aus einer Zeile sollen ggf. auf zwei Zeilen verteilt werden und in andere Spalten übertragen werden) kommst du mit deinem Ansatz nicht richtig weiter. Du muss die Quelle zeilenweise abarbeiten, wobei nur die sichtbaren Zeilen ausgewertet werden.
Nachfolgend in der Textdatei ein entsprechender Code. ggf. muss du noch wenig an den Formatierungen der 2. Spalte arbeiten.
https://www.herber.de/bbs/user/76782.txt
Ein Problem gibt es noch. In der Tabelle3 erscheinen einige Eintrage in Spalte B mehrfach. Dadurch ist eine eindeutige Zuordnung nicht möglich. Im Moment nimmt das Makro die 1. Fundstelle um die letzte Spalte mit einem Eintrag zu ermitteln. Was soll bei Mehrfacheinträgen passieren - hier muss ggf. noch angepasst werden.
Gruß
Franz
Anzeige
AW: Export aus mehreren Tabellen
30.09.2011 10:19:42
Waldemar
Hallo Franz,
erstmal sorry für das späte Feedback, war im Urlaub :) !
Deine Lösung ist super! Das Problem mit den Mehrfacheinträgen in Tabelle 3 wurde im Orginaldokument aufgelöst, d.h. das Makro trifft genau meine Anforderungen.
Tolles Forum, super Lösungen. Weiter so!
Danke und viele Grüße,
Waldemar
AW: Export aus mehreren Tabellen
30.09.2011 12:30:10
Waldemar
Hallo Franz,
jetzt ist noch ein Problem aufgetaucht:
wenn ich in Tabelle 2 die Referenz für Tabelle 3 suche, also den letzten Eintrag in der Tabelle, kann es sein, dass der letze Eintrag z.B. "---" ist.
Wie kann ich dem Makro sagen, falls der letze Eintrag "---" ist, gehe so lange eine Spalte zurück bis der Eintrag nicht mehr "---" ist. Ist sowas möglich?
Danke im Voraus für deine Hilfe!
Gruß
Waldemar
Anzeige
AW: Export aus mehreren Tabellen
30.09.2011 21:54:37
fcs
Hallo Waldemar,
möglich ist vieles. Ggf. macht es auch Sinn, den Inhalt der Zellen auf eine Mindestanzahl Zeichen zu prüfen, statt auf bestimmte Inhalte.
Gruß
Franz
Den folgenden Abschnitt im Makro anpassen:

    'Frequency ermitteln
For ZeileZ = 2 To ZeileZ
vRef = .Cells(ZeileZ, 5).Value        'Referenz für Tabelle2
With wksRef1
'In Tabelle2 Spalte B suchen
Set rRef = .Columns(2).Find(What:=vRef, lookat:=xlWhole, LookIn:=xlValues)
If Not rRef Is Nothing Then
'letzte Spalte mit Eintrag
lngSpalte = .Cells(rRef.Row, .Columns.Count).End(xlToLeft).Column
If lngSpalte > 2 Then
Do
With .Cells(rRef.Row, lngSpalte)
If .Value  "" And InStr(1, .Value, "--") = 0 Then 'Prüfen auf bestimmte  _
Inhalte
'                If Len(.Value) > 5 Then 'Prüfen auf Mindestlänge des Textes
vRef = .Value 'Referenz für Tabelle3
With wksRef2
'In Tabelle3 Spalte B suchen
Set rRef = .Columns(2).Find(What:=vRef, lookat:=xlWhole, LookIn:=xlValues)
If Not rRef Is Nothing Then
'Frequency in Zielblatt einfügen
wksZiel.Cells(ZeileZ, 6).Value = .Cells(rRef.Row, 4).Value
End If
End With
Exit Do
End If
End With
lngSpalte = lngSpalte - 1
If lngSpalte = 2 Then Exit Do
Loop
End If
End If
End With
Next

Anzeige

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige