Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1084to1088
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
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

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

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige