Daten aus verschiedenen Tabellenblättern in ein Blatt holen
Hallo,
mal wieder ein Problem....
Ich habe eine Tabelle, die aus diversen Tabellenblättern besteht. Ich möchte nun in ein bestimmtes Tabellenblatt (2009) Daten anderer Tabellenblätter (1-70) holen. Das heisst, jedesmal wenn ich die Zellen fülle, sollen diese übertragen werden (entweder beim Speichern oder über Enter).
Der Aufbau ist wie folgt:
Tabellenblatt 2009:
Hier soll in A5 der Wert von M3 aus den jeweiligen Blättern übergeben werden.
In B5 soll der Wert aus M4 übergeben werden.
In C5 bis P5 sollen die Werte aus A9 bis N9.
Die Tabellenblätter, aus denen die Daten geholt werden sollen, sind fortlaufend nummeriert, von 1 bis 70.
Ich denke, dass das nur mit Makros funktioniert, und mit denen komme ich überhaupt nicht klar - darum hoffe ich hier auf Hilfe.
Vielen Dank im voraus und viele Grüße - Petra
Antwort schreiben
Antwort 1 von Hajo_Zi vom 29.03.2021, 19:32 Options
Hallo Petra,
das geh ohne Makro schreibe doch die Formel in die Zelle z.B. =Tabelle1!M3
Gruß Hajo
Antwort 2 von Petra65 vom 29.03.2021, 19:41 Options
Hallo,
hab mich vielleicht missverständlich ausgedrückt:
in jedem Blatt (1 - 70) stehen unterschiedliche Daten, M3 ist in jedem Blatt mit einem anderen Wert belegt.
Es kann sein, dass in Blatt 10 am 01.02.09 Werte eingetragen werden, am 05.03.09 werden in Blatt 15 Daten eingetragen, und alle diese Daten sollen dann in das Blatt 2009 übertragen werden.
Gruss - Petra
Antwort 3 von Hajo_Zi vom 29.03.2021, 19:47 Options
Hallo Petra,
nur wenige sehen Deine Datei.
Doch nicht alle Wete aus allen Tabellen in M3?
Gruß Hajo
Antwort 4 von tracer vom 29.03.2021, 19:54 Options
Hallo Petra,
Zitat:
Tabellenblatt 2009:
Hier soll in A5 der Wert von M3 aus den jeweiligen Blättern übergeben werden.
Zitat:
Die Tabellenblätter, aus denen die Daten geholt werden sollen, sind fortlaufend nummeriert, von 1 bis 70.
Demnach möchtest du
70 WERTE in
EINE ZELLE packen?
..oder hast du uns nicht mitgeteilt, dass sich in A4 eine Auswahl befindet ??
mhmh
..oder doch falsch verstanden ?
Antwort 5 von Petra65 vom 29.03.2021, 19:59 Options
Hallo Hajo,
es geht es darum, dass immer mehr Datensätze dazukommen und die Übersicht (2009) sich automatisch um die dazugekommenden Datensätze erweitern soll.
DOCH, alle Werte aller Blätter aus M3, doch es kommen ja immer neue Datensätze hinzu, dann funktioniert das doch nicht.
Es kann sein, dass der erste Datensatz aus Tabelle 1 kommt, der nächts aus Tabelle 5, der nächste wieder aus Tabelle1.
Ich weiss nicht wie ich es erklären soll - sorry.
Ich hatte schonmal so eine ähnliche Frage, kann nur den VBA-Code nicht auf meine aktuelle Tabelle umstricken.
(
http://www.supportnet.de/threads/2153161)
Gruss - Petra
Antwort 6 von Petra65 vom 29.03.2021, 20:01 Options
... oh jeee ...
die Tabelle 2009 soll sich nach unten hin füllen ...
Ich glaube ich habe mich total falsch ausgedrückt!
Antwort 7 von Saarbauer vom 29.03.2021, 20:06 Options
Hallo,
mal grundsätzlich: woran erkennt man wekommt woher?
Es müsste doch in der entsprechenden Zeile irgendwo eine Angabe geben, die die Verbindung zu der Zelle M3 im entsprechenden Tabellenblatt liefert.
Gruß
Helmut
Antwort 8 von Petra65 vom 29.03.2021, 20:08 Options
ich glaube ich stelle die tabelle online, ich denke dann wird das problem deutlicher .,.. melde mich gleich nochmals
Antwort 9 von tracer vom 29.03.2021, 20:13 Options
..also doch so wie Hajo sagte,
Formel in die Zelle z.B. =Tabelle1!$M$3
das machst du in 2 aufeinander folgende Zellen,
z.B. A5 und A6. Danach markierst du beide ZELLEN,
und ziehst die Markierung an der unteren rechten
Ecke 70 Zeilen nach unten, sorry 68.
Dann werden alle Werte aus M3 des jeweiligen Tabellen-Blattes
eingelesen. Zum Schluss kannst du dann auch die
Summe darunter ausgeben lassen...
Antwort 10 von tracer vom 29.03.2021, 20:15 Options
..autsch ... natürlich musst du die Eingabe in der 2. Zelle in
z.B. =Tabelle2!$M$3
ändern, dann erst markieren und ziehen.
Antwort 11 von tracer vom 29.03.2021, 20:17 Options
die $ Zeichen müssen sein, damit IMMER die Zelle
ausgelesen wird, sonst wird die Zellenziffer beim
ziehen der Markierung immer um eins erhöht.
Antwort 13 von tracer vom 29.03.2021, 20:49 Options
WOOWW...
du willst also, Wann immer EIN Eintrag in einem der
Blätter getätigt wird, DIE GANZE Zeile in Das Blatt
2009 in die ERSTE LEERE Zeile übertragen wird,
UND wenn sich ETWAS in einer Zeile z.B. auf Blatt 2
ändert, Das denn auch noch imBlatt 2009 aktualisiert wird???
Ist das etwa so zu verstehen ?
Antwort 14 von Petra65 vom 29.03.2021, 20:54 Options
JAAA, genau das möchte ich ..... das muss doch gehen !! ??
Antwort 15 von tracer vom 29.03.2021, 21:12 Options
PUUUUHHHHHHH,
da bin ich ganz sicher NICHT in der Lage.
Aber hier gibt es sicher jemanden, der
sowas kann..............
Viel Glück.
gruss
tracer
Antwort 16 von Petra65 vom 29.03.2021, 21:15 Options
Schade ... trotzdem Danke.
Gruss - Petra
Antwort 17 von nighty vom 30.03.2021, 08:56 OptionsLösung
hi all ^^
ein automatismus vielleicht :-))
gruss nighty
zur zeit auf auf alle tabellen bezogen
wechselt sich sich der inhalt von einer zelle in spalte m bzw index 13,startet das makro
trage daher deine wunschspalte ein,in der die letzte eingabe erfolgen sollte um den automatismus auszuloesen
einzufuegen
alt+f11/projektexplorer/DeineArbeitsMappe
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 13 Then
With ThisWorkbook.Worksheets(Sh.Index)
Zeile = ThisWorkbook.Worksheets("2009").Range("A" & Rows.Count).End(xlUp).Row + 1
ThisWorkbook.Worksheets("2009").Range("A" & Zeile) = .Range("M3")
ThisWorkbook.Worksheets("2009").Range("B" & Zeile) = .Range("M4")
.Range("A" & Target.Row & ":N" & Target.Row).Copy
ThisWorkbook.Worksheets("2009").Range("C" & Zeile).PasteSpecial Paste:=xlValues, Operation:=xlNone
End With
Application.CutCopyMode = False
End If
Application.EnableEvents = True
End Sub
Antwort 18 von nighty vom 30.03.2021, 09:03 Options
hi all ^^
oder als startbares makro :-)
gruss nighty
Sub ZeileKop()
Dim zeile As Long
With ThisWorkbook.Worksheets(ActiveSheet.Index)
zeile = ThisWorkbook.Worksheets("2009").Range("A" & Rows.Count).End(xlUp).Row + 1
ThisWorkbook.Worksheets("2009").Range("A" & zeile) = .Range("M3")
ThisWorkbook.Worksheets("2009").Range("B" & zeile) = .Range("M4")
.Range("A" & ActiveCell.Row & ":N" & ActiveCell.Row).Copy
ThisWorkbook.Worksheets("2009").Range("C" & zeile).PasteSpecial Paste:=xlValues, Operation:=xlNone
End With
Application.CutCopyMode = False
End Sub
Antwort 19 von rainberg vom 30.03.2021, 09:41 Options
Hallo Petra,
habe aus Zeitmangel ebenfalls ein Makro zusamen geschustert, welche evtl. noch optimiert werden muss.
nighty war zwar schneller, aber will Dir meinen Code nicht vorenthalten.
Bei Eintragung von "x" in Spalte M wird die entsprechende Zeile übertragen.
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim ws1 As Worksheet, ws2 As Worksheet
Dim strKunde As String, strKnr As String
Set ws1 = ThisWorkbook.ActiveSheet
Set ws2 = ThisWorkbook.Worksheets("2009")
If Target.Row < 9 Or Target.Column <> 15 Then Exit Sub
strKnr = ws1.Range("M3").Value
strKunde = ws1.Range("M4").Value
If Target.Value = "x" Then
ws2.Cells(ws2.Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Value = strKnr
ws2.Cells(ws2.Cells(Rows.Count, 1).End(xlUp).Row, 2).Value = strKunde
ws1.Range("A" & ws1.Cells(Rows.Count, 1).End(xlUp).Row & ":N" & ws1.Cells(Rows.Count, 1).End(xlUp).Row).Copy
Sheets("2009").Select
Range("C" & ws2.Cells(Rows.Count, 1).End(xlUp).Row).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A5").Select
End If
End Sub
http://www.file-upload.net/download-1558051/re_TESTdatei.xls.htmlGruß
Rainer
Antwort 20 von nighty vom 30.03.2021, 10:06 Options
hi rainer ^^
circelbezug produziert 4 durchlaeufe
gruss nighty
zum anfang
Application.EnableEvents = False
zum ende
Application.EnableEvents = True