22k Aufrufe
Gefragt in Tabellenkalkulation von Einsteiger_in (99 Punkte)
Halllo zusammen,

ich hab jetzt ewig gesucht aber irgendwie nicht die passende Antwort auf mein Problem gefunden.

Ich habe eine Tabelle mit mehreren Tabellenblättern. Mittels Makro sollen Daten aus mehreren Blättern in 1 Tabellenblatt zusammengefasst werden.

Die Zusammengefassten Daten sollen in Blat Tab1 stehen.

So jetzt das eigentliche Problem.
Es soll aus Blatt Tab2 der Bereich C4 bis letzte beschrieben Zelle in Spalte C kopiert werden und dann in der ersten freien Zelle von Spalte A in Tab1 eingefügt werden. Außerdem soll in Tab2 noch Spalte F4 kopiert werden und dies wieder genauso weit wie in Spalte C, weil darunter noch eine Summe steht, die nicht mitkopieren werden soll. Die kopierte Spalte soll dann wiederum in Tab1 Spalte B eingefügt werden direkt neben dem was aus Spalte C eingefügt wurde.

Ach benutzt wird Office 2010

Schonmal vielen Dank im Voraus für die Hilfe

Gruß Chris

13 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

müsste damit gehen

Range("C65536").End(xlUp).Row

Ermittelt die letzte beschrieben Zeile in Spalte C


Gruß

Helmut
0 Punkte
Beantwortet von Einsteiger_in (99 Punkte)
Und wie funktioniert dass dann mit Spalte F, dass er dort den selben Wert für die letzte Zelle nimmt wie in Spalte B?
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

Range(" C 65536").End(xlUp).Row

das C steht für Spalte C und wäre wenn du die Zeile aus Spalte B brauchst durch B zu ersetzen

Gruß

Helmut
0 Punkte
Beantwortet von Einsteiger_in (99 Punkte)
Nein ich meinte was anderes.

Zum Beispiel ich möchte aus Tab2 C4:C56 (letzter Wert in Spalte C) kopieren. Und nun möchte ich in Spalte F auch F4:F56 kopieren, da hier in F57 noch etwas steht, dieses aber nicht kopiert werden soll.

Das mit dem einfügen klappt und ist kein Problem

Gruß
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Chris,

meinst du das etwa so:

Sub kopieren()

Dim lzeile As Long

'letzte beschriebene Zeile in Spalte C ermitteln
lzeile = Range("C65536").End(xlUp).Row

'ab C4 bis Ende kopieren und im Arbeitsblatt Tabelle2 einfügen
Range(Cells(4, 3), Cells(lzeile, 3)).Copy Destination:=Worksheets("Tabelle2").Range("C4")

'ab F4 bis letzte Zeile aus Spalte C kopieren und im Arbeitsblatt Tabelle2 einfügen
Range(Cells(4, 6), Cells(lzeile, 6)).Copy Destination:=Worksheets("Tabelle2").Range("F4")

End Sub


Das Ziel musst du natürlich noch nach deinen Wünschen anpassen.

Gruß

M.O.
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Chris,

noch mal ich: angepasst auf deine Frage:

Sub kopieren()

Dim lzeilea, lzeilec As Long

'letzte beschriebene Zeile in Tab1, Spalte A ermitteln
lzeilea = Worksheets("Tab1").Range("A65536").End(xlUp).Row

'letzte beschriebene Zeile in Tab 2, Spalte C ermitteln
lzeilec = Worksheets("Tab2").Range("C65536").End(xlUp).Row

'Daten kopieren
'aus Tab2, Spalte C in Tab1 Spalte A
Worksheets("Tab2").Range(Cells(4, 3), Cells(lzeilec, 3)).Copy Destination:=Worksheets("Tab1").Cells(lzeilea + 1, 1)

'aus Tab2, Spalte F in Tab1 Spalte B
Worksheets("Tab2").Range(Cells(4, 6), Cells(lzeilec, 6)).Copy Destination:=Worksheets("Tab1").Cells(lzeilea + 1, 2)

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von Einsteiger_in (99 Punkte)
Ok ja eig genau so, jedoch bekomm ich da den Laufzeitfehler 9 Index außerhalb des gültigen Bereichs.

Ich poste mal meine Code vllt ist das dann einfacher:

Sheets("Tab2").Select
'Kopiert von B1 bis letzte beschriebene Zelle in Spalte B
Range("B1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Tab1").Select

'Erste leere Zelle in Tabellenblatt finden und hier Daten einfügen
Range("A65536").End(xlUp).Offset(1, 0).Select

'Einfügen der Werte ohne Formeln und Formatierungen
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


So und es soll nun der selbe bereich, der hier in Spalte B ausgewählt worden ist in Spalte F markiert und kopiert werden.

Gruß Chris
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

jedoch bekomm ich da den Laufzeitfehler 9 Index außerhalb des gültigen Bereichs.



und wo in den oben genannten Zeilen?

Gruß

Helmut
0 Punkte
Beantwortet von Einsteiger_in (99 Punkte)
hier:


'letzte beschriebene Zeile in Tab1, Spalte A ermitteln
lzeilea = Worksheets("Tab1").Range("A65536").End(xlUp).Row


Gruß Chris
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

ersetze die Zeile, in der Fehler angezeigt wird, mal durch diese Version:

'letzte beschriebene Zeile in Tab1, Spalte A ermitteln
lzeilea = Worksheets("Tab1").Cells(Rows.Count, 1).End(xlUp).Row


Gruß

M.O.
...