Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zellen verbinden

Zellen verbinden
steffen
Hallo in die Runde,
habe im Archiv recherchiert, aber nix passendes gefunden.
wie stelle ich es an, ab H2 die rechts nebenstehenden leerzellen miteinander zu verbinden und zwar soweit, bis die nächste gefüllte Zelle in Zeile 2 erscheint. Diese gefüllte zelle soll dann auch wieder mit den rechts nebenstehenden leeren zellen verbunden werden usw.
Die letzte befüllte zelle soll jedoch nur bis zu letzten befüllten zelle in Zeile 3 mit Leerzellen verbunden werden.
Gruß Steffen
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zellen verbinden
29.06.2009 16:41:33
Jogy
Hi.
Das tut bei mir (mit Office 2003):pre>

Sub verBinden()
Dim myAdr() As String
Dim i As Long
Dim maxCell As Long
Dim lastArea As Range
With ActiveSheet
' Liest die Adressen der Leerzeilen aus und schreibt sie in einen Array
myAdr = Split(.Range(.Cells(2, 8), .Cells(2, .Columns.Count)).SpecialCells( _
xlCellTypeBlanks).Address, ",")
' Bis zur vorletzten befüllten Zelle alles verbinden
For i = 1 To UBound(myAdr) - 1
.Range(myAdr(i)).Offset(0, -1).Resize(1, .Range(myAdr(i)).Columns.Count + 1). _
MergeCells = True
Next
' Spezial für letzte befüllte Zelle
' letzten Bereich von befüllter Zelle + Leerzellen zuweisen
' Hinweis: i steht nach dem letzten i der For-Schleife, also auf Ubound(myAdr)
Set lastArea = .Range(myAdr(i)).Offset(0, -1).Resize(1, .Range(myAdr(i)).Columns.Count + _
1)
' Letzte Spalte in Zeile 3 bestimmen
maxCell = .Cells(3, Columns.Count).End(xlToLeft).Column
' Die erste Zelle muss links von letzten befüllten Zelle in Zeile 3 liegen,
' sonst wird gar nichts gemacht
If lastArea.Column  maxCell Then
Set lastArea = lastArea.Resize(1, maxCell - lastArea.Column + 1)
End If
' Verbinden
lastArea.MergeCells = True
End If
End With
End Sub


Gruss, Jogy

Anzeige
kürzer...
29.06.2009 16:51:10
Jogy
Und noch etwas kürzer:

Sub verBinden()
Dim myAdr() As String
Dim i As Long
Dim maxCell As Long
Dim lastArea As Range
With ActiveSheet
' Liest die Adressen der Leerzeilen aus und schreibt sie in einen Array
myAdr = Split(.Range(.Cells(2, 8), .Cells(2, .Columns.Count)).SpecialCells( _
xlCellTypeBlanks).Address, ",")
' Bis zur vorletzten befüllten Zelle alles verbinden
For i = 1 To UBound(myAdr) - 1
.Range(myAdr(i)).Offset(0, -1).Resize(1, .Range(myAdr(i)).Columns.Count + 1). _
MergeCells = True
Next
' Spezial für letzte befüllte Zelle
' Bereich bis zur letzten Zelle in Zeile 3 erweitern
' Wenn die erste Zelle schon rechts davon liegt, dann gibt es einen Fehler
' und nichts passiert
' Hinweis: i steht auf Ubound(myAdr)
On Error Resume Next
.Range(myAdr(i)).Offset(0, -1).Resize(1, .Cells(3, Columns.Count).End(xlToLeft).Column - _
.Range(myAdr(i)).Column + 2).MergeCells = True
On Error GoTo 0
End With
End Sub

Gruss, Jogy

Anzeige
Korrektur
29.06.2009 17:07:33
Jogy
Da haben sich zwei kleine Fehler eingeschlichen:

Sub verBinden()
Dim myAdr() As String
Dim i As Long
Dim maxCell As Long
Dim lastArea As Range
With ActiveSheet
' Liest die Adressen der Leerzeilen aus und schreibt sie in einen Array
myAdr = Split(.Range(.Cells(2, 8), .Cells(2, .Columns.Count)).SpecialCells( _
xlCellTypeBlanks).Address, ",")
' Bis zur vorletzten befüllten Zelle alles verbinden
For i = 0 To UBound(myAdr) - 1
.Range(myAdr(i)).Offset(0, -1).Resize(1, .Range(myAdr(i)).Columns.Count + 1). _
MergeCells = True
Next
' Spezial für letzte befüllte Zelle
' Das kann je nach Struktur auch die vorletzte befüllte Zelle sein,
' muss also geprüft werden
If .Cells(2, Range(myAdr(i)).Column + Range(myAdr(i)).Columns.Count) = "" Then
' Ist wirklich die letzte
' Bereich bis zur letzten Zelle in Zeile 3 verkleinern
' Wenn die erste Zelle schon rechts davon liegt, dann gibt es einen Fehler
' und nichts passiert
' Hinweis: i steht auf Ubound(myAdr)
On Error Resume Next
.Range(myAdr(i)).Offset(0, -1).Resize(1, .Cells(3, Columns.Count).End(xlToLeft). _
Column - .Range(myAdr(i)).Column + 2).MergeCells = True
On Error GoTo 0
Else
' Ist die vorletzte, also kompletten Bereich verbinden
.Range(myAdr(i)).Offset(0, -1).Resize(1, .Range(myAdr(i)).Columns.Count + 1). _
MergeCells = True
End If
End With
End Sub

So sollte es jetzt passen.
Gruss, Jogy

Anzeige
Danke
30.06.2009 07:25:23
steffen
das läuft echt super. toll wie hier wieder geholfen wurde.
So macht das Spaß.
Gruß Steffen
AW: Zellen verbinden
29.06.2009 22:42:50
Daniel
Hi
so könnte es gehen:

Sub test()
Dim Zellen As Range
With Range(Cells(2, "H"), Cells(3, Columns.Count).End(xlToLeft).Offset(-1, 0))
With .SpecialCells(xlCellTypeBlanks)
For Each Zellen In .Areas
Zellen.Offset(0, -1).Resize(, Zellen.Cells.Count + 1).MergeCells = True
Next
End With
End With
End Sub


Gruß, Daniel

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige