EXCEL VBA Zellen verbinden. MERGE
Hallo Mitglieder,
ich verzweifel gerade an einem Problem, was mich schon 'Stunden' kostet.
Ich habe in einem Tabellenblatt Daten stehen, die sich auf eine Kalenderwoche beziehen. Es kann natürlich mehrere Zeilen pro KW geben.
Ich möchte nun das Tabellenblatt durchlaufen und alle die Zellen Lx-Ly, sowie Mx-My verbinden, sofern von x-y der Eintrag in Ax identisch ist.
Ich habe das auf dem angefügten Bild versucht zu visualisieren.
Kann mir da vielleicht ein jemand eine Hilfestellung geben?
Dass ich mit Range.Cells.Merge in gewisser Weise arbeiten muss ist mir klar, da ich mit fixen Werten zum gewünschten Ergebnis komme. Ich bekomme aber die Zusammenhänge nicht auf die Kette, damit das ganze auch flexibel ist wenn sich z.B. Einträge in der Spalte KW ändern.
Danke fein, ihr lieben!
ich verzweifel gerade an einem Problem, was mich schon 'Stunden' kostet.
Ich habe in einem Tabellenblatt Daten stehen, die sich auf eine Kalenderwoche beziehen. Es kann natürlich mehrere Zeilen pro KW geben.
Ich möchte nun das Tabellenblatt durchlaufen und alle die Zellen Lx-Ly, sowie Mx-My verbinden, sofern von x-y der Eintrag in Ax identisch ist.
Ich habe das auf dem angefügten Bild versucht zu visualisieren.
Kann mir da vielleicht ein jemand eine Hilfestellung geben?
Dass ich mit Range.Cells.Merge in gewisser Weise arbeiten muss ist mir klar, da ich mit fixen Werten zum gewünschten Ergebnis komme. Ich bekomme aber die Zusammenhänge nicht auf die Kette, damit das ganze auch flexibel ist wenn sich z.B. Einträge in der Spalte KW ändern.
Danke fein, ihr lieben!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 338561
Url: https://administrator.de/forum/excel-vba-zellen-verbinden-merge-338561.html
Ausgedruckt am: 16.04.2025 um 12:04 Uhr
6 Kommentare
Neuester Kommentar
Servus @Aximand .
Bitteschön: auto_merge_on_change_338561.xlsm
Die Merge-Bereiche ändern sich im Demo-Sheet automatisch wenn sich in Spalte A etwas ändert (Event: Worksheet_Change!).

Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Bitteschön: auto_merge_on_change_338561.xlsm
Die Merge-Bereiche ändern sich im Demo-Sheet automatisch wenn sich in Spalte A etwas ändert (Event: Worksheet_Change!).
Danke fein, ihr lieben!
Bitte fein mein Lieber Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Danke auch
. *Koppschüttel* ....
Hoffentlich ist das jetzt "genehm", ansonsten weiß ich dir leider nicht mehr zu helfen, außer dir einen VBA Kurs zu empfehlen.
Also sie scheint genial zu sein, aber ich durchblicke das ned.
Ganz einfach, das Makro regiert automatisch darauf wenn sich in Spalte A etwas ändert und baut dann die Merge-Bereiche neu auf. Habe es ja extra deswegen alles ausführlich kommentiert.Hinzu kommt, dass die Daten über ein Userform in die Liste eingetragen werden. Das muss ich mir erstmal auf der Zunge und im Schädel zergehen lassen. Wie toll doch VBA ist :P
Du kannst das von mir aus auch manuell ausführen die Sub sieht dann so aus:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Sub AutoMerge()
On Error Goto Errhandler
Dim rngGroupStart As Range, cell As Range
Application.ScreenUpdating = False
With ActiveSheet
'start festlegen
Set rngGroupStart = .Range("A5")
'Verbindungen der Spalten M:L lösen
.Range("M:L").UnMerge
'Für jede Zelle von A5:A(ENDE)
For Each cell In .Range("A5:A" & .Cells(Rows.Count, "A").End(xlUp).Row)
' Wenn die Zelle drunter einen anderen Wert hat als vom Gruppenstart
If cell.Offset(1, 0).Value <> rngGroupStart.Value Then
'Wenn mindestens zwei Zellen betroffen sind, starte Merge
If (cell.Row - rngGroupStart.Row) > 0 Then
'Merge in Spalten M und L vornehmen
.Range(.Cells(rngGroupStart.Row, "L"), .Cells(cell.Row, "L")).Merge
.Range(.Cells(rngGroupStart.Row, "M"), .Cells(cell.Row, "M")).Merge
End If
'nächsten Gruppenstart festlegen
Set rngGroupStart = cell.Offset(1, 0)
End If
Next
End With
Errhandler:
Application.ScreenUpdating = True
End Sub

Oh Herre, mit der Lösung kann ich nix anfangen.
WOW, mein lieber Herr Gesangsverein, da bekommt man es schon auf dem Silbertablet und auch noch kommentiert und bekommt sowas an den Kopf geworfen. ECHT DER HAMMER Fettes -1.
Gruß

Ich kann bezüglich meines vorhandenen Wissens nichts damit anfangen, weil ich es (noch) nicht verstehe.
Nun, wenn keiner weiß was du daran nicht verstehst kann dir auch niemand helfen.