PDA

Vollständige Version anzeigen : Spalten aus mehreren Tabellen in anderer Tabelle in Zeilen ausgeben


Adam23
29.08.2017, 09:29
Hallo,

ich benötige mal eurer Fachwissen.
Ich habe eine Arbeitsmappe mit mehreren Tabellen.
In Tabelle "Rohdaten" möchte ich den Inhalt der Spalten C,E und G anderer Tabellen (Tabelle1, usw..) in der Tabelle Rohdaten in Zeilen 4,5 und 6 für Tabelle 1 (und in Zeilen 7,8 und 9 für Tabelle 2.... usw) untereinander ausgeben.

Hat einer einen Lösungsvorschlag?

Viele Grüße
Adam

Jonas0806
29.08.2017, 10:13
Hallo Adam,

bitte lade eine Beispieldatei hoch, welche den gleichen Aufbau hat, wie dein Original.

Trage dein Wunschergebnis händisch in die Datei ein.

Adam23
29.08.2017, 10:53
Hallo,

anbei eine Testdatei.
Zur Info die Tabelle "Aufstellung" wird nicht ausgewertet, wird aber benötigt. sodass diese mit in der Arbeitsmappe verbleiben muss.

MfG
Adam

Jonas0806
29.08.2017, 11:47
Hallo Adam,

bitte ein *.xlsx-File hochladen.

Adam23
29.08.2017, 11:54
Hallo Jonas,

gibt es dazu ein Ansatz wie man die Daten zusammenfassen kann oder ist das so wie ich das vorhabe nicht umzusetzen?

Vielleicht wäre es einfacher, wenn man die Daten aus Spalte "Menge Leferung u. Montage" in ein Tabellenblatt zusammenträgt sowie für die 2 weiteren Spalten auch jeweils ein Tabellenblatt erstellt wird ?

Beispiel:
Tabellenblatt "Rohdaten L+M" = Daten aus den Tabellen 1 bis 3 Spalte C "Menge Lieferung + Montage"
Tabellenblatt "Rohdaten L" = Daten aus den Tabellen 1 bis 3 Spalte E "Menge Lieferung"
Tabellenblatt "Rohdaten M" = Daten aus den Tabellen 1 bis 3 Spalte G "Menge Material"

wäre so etwas einfacher umzusetzen?

Gruß
Adam

Adam23
29.08.2017, 11:56
Ich habe die Datei mit kaum Inhalt aber diese ist leider mit 300kb zu groß um sie hier hochzuladen. Ich habe diese deswegen vorher gepackt.

Adam23
29.08.2017, 12:00
Hallo Jonas,

hmm glatt überlesen.
anbei eine gepackte*.xlsx Datei.

Gruß
Adam

Adam23
29.08.2017, 12:25
Ich habe schon etwas probiert was an sich funktioniert.
Hiermit kann ich die Spalten C "Menge Lieferung + Montage" aus den einzelnen Tabellen auslesen. Nur leider sind das über 400 Einträge so dass ich in meinen Beispiel den VBA Code Abfrage für jede einzelne Zelle schreiben müsste :(

Gibt es eine Möglichkeit den Bereich den man auslesen möche einzugrenzen?
z.B.
C21 bis c99 dann erst wieder C102 bis C130

Gruß
Adam


Sub auslesen()

Dim i As Integer
Dim ws As Worksheet, j As Integer

For i = 1 To Worksheets.Count - 4
With Worksheets("Rohdaten")
.Cells(i + 6, 1).Value = Worksheets(i).Name
.Cells(i + 6, 2).Value = Worksheets(i).Range("J7").Value ' Abruf
.Cells(i + 6, 3).Value = Worksheets(i).Range("J12").Value ' Betrag
'.Cells(i + 6, 4).Value = Worksheets(i).Range("F1").Value ' Datum
'.Cells(i + 6, 5).Value = Worksheets(i).Range("C4").Value 'Platzhalter unter "Position"
.Cells(i + 6, 6).Value = Worksheets(i).Range("C21").Value 'Ausgabe Pos.1.1
.Cells(i + 6, 7).Value = Worksheets(i).Range("C22").Value'Ausgabe Pos.1.2
.Cells(i + 6, 8).Value = Worksheets(i).Range("C23").Value'Ausgabe Pos.1.3
.Cells(i + 6, 9).Value = Worksheets(i).Range("C24").Value'Ausgabe Pos.1.4
.Cells(i + 6, 10).Value = Worksheets(i).Range("C25").Value'Ausgabe Pos.1.5
.Cells(i + 6, 11).Value = Worksheets(i).Range("C25").Value'Ausgabe Pos.1.6
.Cells(i + 6, 12).Value = Worksheets(i).Range("C26").Value'Ausgabe Pos.1.7
.Cells(i + 6, 13).Value = Worksheets(i).Range("C26").Value'Ausgabe Pos.1.8
.Cells(i + 6, 14).Value = Worksheets(i).Range("C27").Value'Ausgabe Pos.1.9
.Cells(i + 6, 15).Value = Worksheets(i).Range("C28").Value'Ausgabe Pos.1.10
.Cells(i + 6, 16).Value = Worksheets(i).Range("C29").Value'Ausgabe Pos.1.11
.Cells(i + 6, 17).Value = Worksheets(i).Range("C30").Value'Ausgabe Pos.1.12
.Cells(i + 6, 18).Value = Worksheets(i).Range("C31").Value'Ausgabe Pos.1.13
.Cells(i + 6, 19).Value = Worksheets(i).Range("C32").Value'Ausgabe Pos.1.14


End With
Next i
End Sub

Jonas0806
29.08.2017, 13:20
Hallo,

ein letzer Versuch, Adam.

Bitte lade ein *.xlsx-File hoch, kein *.zip!

Wir benötigen nur ein Ausschnitt deiner Tabelle. Verschlanke diese auf 10 - 20 Datensätze, ohen dabei die Struktur zu verändern.

Außerdem, bitte gebe den Helfern auch Zeit zu reagieren. Mit deinem "Spamen" ist auch keinem geholfen.

Adam23
29.08.2017, 13:47
Hallo Jonas,

sorry für mein vorschnelles Handeln.

Anbei die gewünschte Datei.

Danke für deine Mühe.

MfG
Adam

Jonas0806
29.08.2017, 14:20
Hallo Adam,

wieso willst Du von einem halbwegs guten Datenmodell zu einem schlechten wechseln?

Erstelle dir eine vernünftige Datensatzliste. Ein Datensatz pro Zeile, alle Attributwerte in eine eigene Spalte. Wie willst Du das jemals ordentlich auswerten?

Also, bringe erstmal deine Datenstruktur in Ordnung, dann kann man über Konsolidierung und Auswertung sprechen.

WS-53
29.08.2017, 14:36
Hallo Adam,

ja so richtig kann ich auch nicht verstehen, warum du diese Aufteilung benötigst, aber mit einer INDEX/VERGLEICH-Kombination lässt sich das Problem recht einfach lösen:

Tabelle1-3
C21: =INDEX(Rohdaten!$F$7:$Y$99;VERGLEICH($J$7*1;Rohdaten!$A$7:$A$99;0)+SPALTE()-3;VERGLEICH($B21;Rohdaten!$F$6:$Y$6;0))
E21: =INDEX(Rohdaten!$F$7:$Y$99;VERGLEICH($J$7*1;Rohdaten!$A$7:$A$99;0)+SPALTE()-4;VERGLEICH($B21;Rohdaten!$F$6:$Y$6;0))
G21: =INDEX(Rohdaten!$F$7:$Y$99;VERGLEICH($J$7*1;Rohdaten!$A$7:$A$99;0)+SPALTE()-5;VERGLEICH($B21;Rohdaten!$F$6:$Y$6;0))

Und dann bis zum Ende runter ziehen.

Gerade eben sehe ich, dass du ja nicht von Rohdaten auf Tabelle1, Tabelle2 und Tabelle3 aufteilen willst, sondern dass du die Daten der einzelnen Tabellen in Rohdaten sehen möchtest. Insofern ist meine Lösung natürlich falsch!

Aber nun:
in Rohdaten

F7: =INDEX('Tabelle 1'!$C$21:$C$99;VERGLEICH(F$6;'Tabelle 1'!$B$21:$B$99;0))
F8: =INDEX('Tabelle 1'!$E$21:$E$99;VERGLEICH(F$6;'Tabelle 1'!$B$21:$B$99;0))
F9: =INDEX('Tabelle 1'!$G$21:$G$99;VERGLEICH(F$6;'Tabelle 1'!$B$21:$B$99;0))

Und nach rechts bis zum Ende ziehen.

Für die nächsten Aufträge muss dann aber jeweils der Tabellenname angepasst werden.

Aber wenn du irgendwo einstellst, welcher Auftrag in welcher Tabelle abgelegt ist, dann lässt sich das wohl recht gut durch ein Makro realisieren.