12.3k Aufrufe
Gefragt in Tabellenkalkulation von petra65 Experte (1.8k Punkte)
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

23 Antworten

0 Punkte
Beantwortet von tracer Mitglied (393 Punkte)
die $ Zeichen müssen sein, damit IMMER die Zelle
ausgelesen wird, sonst wird die Zellenziffer beim
ziehen der Markierung immer um eins erhöht.
0 Punkte
Beantwortet von petra65 Experte (1.8k Punkte)
So, habe nun die Tabelle online, diese ist zu finden unter:

www.file-upload.net/download-1557386/TESTdatei.xls.html

Ich denke dann wird es (so hoffe ich) deutlicher.

Schonmal vielen Dank ...

Petra
0 Punkte
Beantwortet von tracer Mitglied (393 Punkte)
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 ?
0 Punkte
Beantwortet von petra65 Experte (1.8k Punkte)
JAAA, genau das möchte ich ..... das muss doch gehen !! ??
0 Punkte
Beantwortet von tracer Mitglied (393 Punkte)
PUUUUHHHHHHH,

da bin ich ganz sicher NICHT in der Lage.
Aber hier gibt es sicher jemanden, der
sowas kann..............

Viel Glück.
gruss
tracer
0 Punkte
Beantwortet von petra65 Experte (1.8k Punkte)
Schade ... trotzdem Danke.

Gruss - Petra
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
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


www.file-upload.net/download-1558051/re_TESTdatei.xls.html

Gruß
Rainer
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi rainer ^^

circelbezug produziert 4 durchlaeufe

gruss nighty

zum anfang

Application.EnableEvents = False


zum ende

Application.EnableEvents = True
...