Excel-Makro gesucht: Zusammenführen der verteilten Inhalte mehrerer markierter Zeilen in eine
Zwar kann ich Excel (2010) ganz gut bedienen, doch keine Makros schreiben. Hab schon viel gegooglet und ähnliche, aber keine genau passenden Lösungen gefunden.
Ich habe das Problem einer riesigen Excel-Tabelle mit ca. 6000 Zeilen und ungefähr 40 Spalten, die durch den Import vieler kleinerer Tabellen entstanden ist. Nun muß ich die über mehrere Spalten und Zeilen verteilten Informationen zu einem Produkt in einer Zeile zusammen fassen. Da im entscheidenden Feld, das mir anzeigt, welche Zeilen zusammen gehören sollen, Schreibfehler und Abweichungen vorkommen können, muss ich die Zeilen schon alle selbst anschauen und kann sie nicht automatisch vergleichen. Ich möchte daher die Zeilen, die zusammengeführt werden sollen, einfach markieren und dann das Makro ausführen, das alle Inhalte in die oberste der markierten Zeilen zusammenkopiert und die darunter stehenden löscht. Wichtig: Die Anzahl der Spalten darf sich auf keinen Fall verändern!
Beispiel:

Ich wäre dankbar für eine zeitsparende, einfache Lösung!
Vielen Dank
Stefan
Ich habe das Problem einer riesigen Excel-Tabelle mit ca. 6000 Zeilen und ungefähr 40 Spalten, die durch den Import vieler kleinerer Tabellen entstanden ist. Nun muß ich die über mehrere Spalten und Zeilen verteilten Informationen zu einem Produkt in einer Zeile zusammen fassen. Da im entscheidenden Feld, das mir anzeigt, welche Zeilen zusammen gehören sollen, Schreibfehler und Abweichungen vorkommen können, muss ich die Zeilen schon alle selbst anschauen und kann sie nicht automatisch vergleichen. Ich möchte daher die Zeilen, die zusammengeführt werden sollen, einfach markieren und dann das Makro ausführen, das alle Inhalte in die oberste der markierten Zeilen zusammenkopiert und die darunter stehenden löscht. Wichtig: Die Anzahl der Spalten darf sich auf keinen Fall verändern!
Beispiel:

Ich wäre dankbar für eine zeitsparende, einfache Lösung!
Vielen Dank
Stefan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 209011
Url: https://administrator.de/forum/excel-makro-gesucht-zusammenfuehren-der-verteilten-inhalte-mehrerer-markierter-zeilen-in-eine-209011.html
Ausgedruckt am: 08.05.2025 um 10:05 Uhr
5 Kommentare
Neuester Kommentar

Hallo stschuck!
Unter der Annahme, dass der markierte Bereich in Spalte A beginnt und nur ein Wert in Spalte A (Inhalt 0) steht. Ausserdem ab der 3. Spalte C nur ein Wert pro Spalte steht...
Unter obiger Annahme könnte es hiermit gehen (Code in Modul einfügen):
Gruß Dieter
Unter der Annahme, dass der markierte Bereich in Spalte A beginnt und nur ein Wert in Spalte A (Inhalt 0) steht. Ausserdem ab der 3. Spalte C nur ein Wert pro Spalte steht...
Unter obiger Annahme könnte es hiermit gehen (Code in Modul einfügen):
Option Explicit
Const iColMax = 40
Public Sub Zusammenfassen()
Dim aValues As Variant, aNewValues(1 To 1, 1 To iColMax) As Variant
Dim iRowValue As Long, iRowFirst As Long, iRowNext As Long, iRowLast As Long, r As Long, c As Long
If Selection.Rows.Count < 2 Then
MsgBox "Es müssen mindestens 2 Zeilen markiert sein!", vbInformation, "Hinweis...": Exit Sub
End If
aValues = Selection.Value
iRowValue = GetRowValue(aValues)
iRowFirst = Selection.Row
iRowNext = iRowFirst + 1
iRowLast = iRowFirst + Selection.Rows.Count - 1
aNewValues(1, 1) = aValues(iRowValue, 1)
aNewValues(1, 2) = aValues(iRowValue, 2)
For r = 1 To UBound(aValues, 1)
For c = 3 To iColMax
If Not IsEmpty(aValues(r, c)) Then
aNewValues(1, c) = aValues(r, c)
End If
Next
Next
Rows(iRowNext & ":" & iRowLast).Delete Shift:=xlUp
Cells(iRowFirst, 1).Resize(1, iColMax).Value = aNewValues
End Sub
'Array-Zeile mit Wert in Spalte A ermitteln
Private Function GetRowValue(ByRef aValues) As Long
Dim i As Long
'Falls Spalte A leer, dann Wert für Spalte B aus 1.er Array-Zeile
GetRowValue = 1
For i = 1 To UBound(aValues, 1)
If Not IsEmpty(aValues(i, 1)) Then
GetRowValue = i: Exit For
End If
Next
End Function
Gruß Dieter

Hallo stschuck!
Leider fehlt mir jetzt die Zeit für eine Korrektur, da ich gleich zur Arbeit muss...
Allerdings dürfte der Fehler auftreten, weil in Spalte A kein Wert steht?
Gruß Dieter
Leider fehlt mir jetzt die Zeit für eine Korrektur, da ich gleich zur Arbeit muss...
Allerdings dürfte der Fehler auftreten, weil in Spalte A kein Wert steht?
Gruß Dieter

Hallo Stefan!
Habe im Code (Codezeile 40) noch eine Korrektur eingefügt, wodurch die Spalte A auch Leer sein darf.
Die Korrektur hat folgende Auswirkungen:
Ist die Spalte A im markierten Bereich leer, dann wird der Wert für Spalte B aus der 1.en markierten Zeile übernommen.
Ist die Spalte A im markierten Bereich (beliebige Zeile) nicht leer , dann wird der Wert in Spalte A und der Wert für Spalte B aus der Zeile, in der die Spalte A einen Wert enthält übernommen.
Gruß Dieter
Habe im Code (Codezeile 40) noch eine Korrektur eingefügt, wodurch die Spalte A auch Leer sein darf.
Die Korrektur hat folgende Auswirkungen:
Ist die Spalte A im markierten Bereich leer, dann wird der Wert für Spalte B aus der 1.en markierten Zeile übernommen.
Ist die Spalte A im markierten Bereich (beliebige Zeile) nicht leer , dann wird der Wert in Spalte A und der Wert für Spalte B aus der Zeile, in der die Spalte A einen Wert enthält übernommen.
Gruß Dieter