Werte von Excel Tabellenblättern einer Datei zusammenfügen
Hallo Experten,
ihr habt Fachwissen und ich nur Ahnung, deswegen muss ich mich hier mal zu Wort melden
Folgendes Problem:
Ich habe eine Excel Datei mit mehreren Tabellen. Diese Tabellen sind wiederrum verformelt, da Sie Werte aus anderen Dateien importieren und erstellen.
Ich möchte gerne am Anfang der Datei eine Tabelle "Import" via VBA füllen, die die nachfolgenden (variabel 3-5) Tabellen "Server *" zusammenfasst. Die Überschriften bis zur siebten Spalte sind immer die gleichen, ab dann kommen verschiedene Werte. Ich kann es nicht einfach kopieren oder verknüpfen, da diese Datei beim Start unterschiedlich viele Datensätze in die einzelnen Tabellen importiert. Es sollen also auch keine leeren Zeilen entstehen und nur die Werte übertragen werden, mit Formeln kann ich nichts anfangen. Am Ende der Datei stehen noch zwei andere Tabellen die außen vor sind.
Hört sich also ziemlich kompliziert an, ich habe auch schon ein Makro gefunden, nur leider funktioniert dieses nicht:
Aus Formeln nur die Werter abzuleiten ging doch irgendwie mit ".PasteSpecial Paste:=xlValues" oder?
Facts: Excel 2003 / Win 2000
Bin für jede VBA Hilfe dankbar ;)
ihr habt Fachwissen und ich nur Ahnung, deswegen muss ich mich hier mal zu Wort melden
Folgendes Problem:
Ich habe eine Excel Datei mit mehreren Tabellen. Diese Tabellen sind wiederrum verformelt, da Sie Werte aus anderen Dateien importieren und erstellen.
Ich möchte gerne am Anfang der Datei eine Tabelle "Import" via VBA füllen, die die nachfolgenden (variabel 3-5) Tabellen "Server *" zusammenfasst. Die Überschriften bis zur siebten Spalte sind immer die gleichen, ab dann kommen verschiedene Werte. Ich kann es nicht einfach kopieren oder verknüpfen, da diese Datei beim Start unterschiedlich viele Datensätze in die einzelnen Tabellen importiert. Es sollen also auch keine leeren Zeilen entstehen und nur die Werte übertragen werden, mit Formeln kann ich nichts anfangen. Am Ende der Datei stehen noch zwei andere Tabellen die außen vor sind.
Hört sich also ziemlich kompliziert an, ich habe auch schon ein Makro gefunden, nur leider funktioniert dieses nicht:
Sub Tabellen_zusammenfügen()
letztesBlatt = ActiveWorkbook.Sheets.Count
For i = 2 To ActiveWorkbook.Sheets.Count - 2
Sheets(i).Select
letzteZeile = Range("A65536").End(xlUp).Row
If letzteZeile > 7 Then
Rows("8:" & letzteZeile).Select
Selection.Copy
Sheets("Import").Select
Range("A" & Range("A65536").End(xlUp).Row + 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Next i
End Sub
Aus Formeln nur die Werter abzuleiten ging doch irgendwie mit ".PasteSpecial Paste:=xlValues" oder?
Facts: Excel 2003 / Win 2000
Bin für jede VBA Hilfe dankbar ;)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 53982
Url: https://administrator.de/forum/werte-von-excel-tabellenblaettern-einer-datei-zusammenfuegen-53982.html
Ausgedruckt am: 08.04.2025 um 08:04 Uhr
16 Kommentare
Neuester Kommentar
Hallo Shaggy84 und willkommen im Forum!
Da gerade keine Experten in der Nähe sind, versuche ich es mal ...
Eigentlich sieht der Code schon recht vernünftig aus. Aus der gewählten Vorgangsweise ergibt sich nur eine kleine Einschränkung: Es wird immer auf die Spalte A abgestellt, um den Umfang der zu kopierenden Daten bzw den Ort des Einfügens festzustellen. Sofern in allen Tabellenzeilen, die kopiert werden sollen, in Spalte A ein Inhalt steht, ergibt sich daraus aber kein Problem.
Konkret ändern müsstest Du, wie vermutet, nur die "Paste"-Zeile - versuch es einmal mit
Nur als Anmerkung: Die Zeile 2 erfüllt keinen nachvollziehbaren Zweck und könnte daher ersatzlos gestrichen werden.
HTH
bastla
Da gerade keine Experten in der Nähe sind, versuche ich es mal ...
Eigentlich sieht der Code schon recht vernünftig aus. Aus der gewählten Vorgangsweise ergibt sich nur eine kleine Einschränkung: Es wird immer auf die Spalte A abgestellt, um den Umfang der zu kopierenden Daten bzw den Ort des Einfügens festzustellen. Sofern in allen Tabellenzeilen, die kopiert werden sollen, in Spalte A ein Inhalt steht, ergibt sich daraus aber kein Problem.
Konkret ändern müsstest Du, wie vermutet, nur die "Paste"-Zeile - versuch es einmal mit
Selection.PasteSpecial Paste:=xlPasteValues
HTH
bastla
Hallo Shaggy84!
Für das jeweilige Löschen müsste folgendes genügen:
Grüße
bastla
Für das jeweilige Löschen müsste folgendes genügen:
Sub EntferneZeilen()
Worksheets("Import").Range("8:65535").Clear
End Sub
Sub EntferneNullen()
Dim Zelle As Object
For Each Zelle In Worksheets("Import").Range("B8", Range("B65536").End(xlUp))
If Zelle.Value = 0 Then Zelle.Clear
Next
End Sub
Grüße
bastla
Hallo Shaggy84!
Zum "Löschen en bloc" fiele mir nur etwa folgende Vorgangsweise ein:
Grüße
bastla
Zum "Löschen en bloc" fiele mir nur etwa folgende Vorgangsweise ein:
- Allen Zeilen, die nicht gelöscht werden sollen, in einer freien Spalte eine laufende Nummer geben, für die zu löschenden Zeilen die Nummer 100000 eintragen.
- Danach die ganze Tabelle nach dieser Spalte sortieren (wie lange das wieder dauern würde, kann ich auch nicht abschätzen - am Besten einmal vorweg testen, um den ev Zeitgewinn zu eruieren bzw die Strategie gleich zu verwerfen).
- Jetzt die in einem Block am Ende stehenden Zeilen in einem einzigen Löschvorgang entfernen.
- Abschließend die Nummerierungsspalte löschen.
Grüße
bastla
@Biber
Du bist ja so fürsorglich ...
Übrigens: Wenn Du noch Zeit hast, könntest Du das versehentlich hineinkopierte zweite "If" entfernen ...
Grüße
bastla
Du bist ja so fürsorglich ...
Übrigens: Wenn Du noch Zeit hast, könntest Du das versehentlich hineinkopierte zweite "If" entfernen ...
Grüße
bastla