itnoobnew
Goto Top

Excel - letzte Zeile aus mehreren Sheets ein ein neues Sheet untereinander kopieren

Hallo zusammen,

ich versuche, mir ein Dashboard in Excel aus verschiedenen Excel-basierten Reports zusammenzustellen.

Dabei ist für mich immer die letzte Zeile der Reports von Bedeutung.
In dieser Zeile sind Kommazahlen, Worte und Prozentsätze enthalten.

Jeder Report besteht aus verschiedenen Reitern, die alle gleich aufgebaut sind und kopiert werden sollen.
Die Reports untereinander sind nicht identisch aufgebaut.
Mein Ziel ist es, ein einziges Macro zu haben, dass ich für all diese Reports verwenden kann.

Es reicht mir erst einmal, wenn ich für jeden Report eine Übersichtstabelle der letzten Zeilen aller Reiter bekomme.
Die weitere Verarbeitung werde ich dann wohl mit copy-paste und Pivot-Tabellen stricken müssen.

Könnt ihr mir helfen?

Vielen Dank schon einmal vorab!
ITNoobNew

Content-Key: 309714

Url: https://administrator.de/contentid/309714

Ausgedruckt am: 19.03.2024 um 08:03 Uhr

Mitglied: colinardo
colinardo 13.07.2016 aktualisiert um 18:14:32 Uhr
Goto Top
Hallo ITNoobNew, Willkommen auf Administrator.de!
So ganz ohne Info zu deinem Sheet geht dies z.B. so:
Sub MergeLastRowsInSummarySheet()
    With Sheets.Add(After:=Sheets(Sheets.Count))
        ' Name des neuen Sheets  
        .Name = "Zusammenfasssung"  
        'Alle Sheets ohne das neue auslesen und ins neue Sheet kopieren  
        For i = 1 To Sheets.Count - 1
            Sheets(i).Cells(Rows.Count,"A").End(xlUp).EntireRow.Copy Destination:=.Cells(.UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1, 1)  
        Next
        ' neues Sheet aktivieren  
        .Activate
    End With
End Sub
Es erstellt ein neues Sheet in der Arbeitsmappe in der die letzten "genutzen" Zeilen deiner Arbeitsblätter untereinander kopiert werden.

Hier noch das Demo-Sheet zum Download

Grüße Uwe
Mitglied: ITNoobNew
ITNoobNew 20.07.2016 um 13:45:29 Uhr
Goto Top
Hi Uwe,

danke dir für dein schnelles Feedback.

Das Macro ansich scheint mit meinen Tabellen grundsätzlich zu funktionieren, aber in meinen Ursprungs-Dateien scheinen unter den sichtbaren Einträgen noch Zellen genutzt zu werden, ohne dass ich Einträge sehen würde.
Wenn ich das Macro anstoße, wird die "Zusammenfassung" als Tab neu erstellt, ist aber leer.

Ich habe jetzt die ersten paar hundert Zeilen unter meinen letzten verwendeten Zeilen gelöscht und jetzt funktionniert es.
Da ich das aber nicht immer für alle Sheets machen möchte, habe ich mir gedacht, dass man vlt. einbauen kann, dass das Macro prüft, ob in einer der Zeilen das Wort "Monat" steht und dann nur diejenige Zeile kopiert.

Irgendwie im Sinne von
For i = 1 To Sheets.Count - 1 prüfe, ob "Monat", wenn ja, dann kopiere die letzte Zeile.

Gibt es da eine Möglichkeit?

LG
Mitglied: colinardo
colinardo 20.07.2016 aktualisiert um 14:05:34 Uhr
Goto Top
Zitat von @ITNoobNew:
Gibt es da eine Möglichkeit?
Sicher, die gibt es natürlich, ich wusste initial nur nicht welche Spalte 100%ig einen Wert enthält deswegen hatte ich es nach dem universellen Schema UsedRange gemacht.
Wenn du mir sagst welche in welcher Spalte immer ein Wert steht korrigiere ich es für dich oben.

-edit- Habe es oben für dich angepasst, trage in Zeile 7 einfach die Spalte ein in der String "Monat" steht:
Sheets(i).Cells(Rows.Count,"A") ..........
Mitglied: ITNoobNew
ITNoobNew 27.07.2016 um 14:12:53 Uhr
Goto Top
Sorry, habe dein Feedback nicht eher gesehen...

Super, danke dir!
Funktioniert wunderbar face-smile

Mal sehen, wie weit ich damit komme.