Supportnet / Forum / Tabellenkalkulation
Zellen Verbinden mit VBA wenn wert identisch
Frage
Hallo Zusammen
Ich suche eine Lösung um automatisch zellen zu Verbinden wenn der Wert mit der vorherigen oder mit der nächsten zelle identisch ist.
Suchbereich: Zeile 10
Vielen Dank für eure rasche Antwort.
Viele Grüsse
David
Antwort 1 von Risatara2
Morgen...
Versuchs mal mit diesem VBA-Code:
Einfach in VBA einfügen und ausführen, geht allerdings nur bis 100 (kannst du mit der Konstante Maxspalte einstellen)
Gruß, Risatara
Versuchs mal mit diesem VBA-Code:
Sub verbbindeZellen()
Dim Spalte As Integer
Const Maxspalte As Integer = 100
Dim Arbeitsblatt As Worksheet
For Spalte = 1 To Maxspalte
Set Arbeitsblatt = ThisWorkbook.ActiveSheet
With Arbeitsblatt
If Cells(10, Spalte).Value = Cells(10, Spalte + 1).Value And Cells(10, Spalte).Value <> "" Then
Cells(10, Spalte + 1).Value = ""
Range(Cells(10, Spalte), Cells(10, Spalte + 1)).Merge
End If
End With
Next Spalte
End Sub
Einfach in VBA einfügen und ausführen, geht allerdings nur bis 100 (kannst du mit der Konstante Maxspalte einstellen)
Gruß, Risatara
Antwort 2 von Lemming
Hallo Risatara
VIelen Dank. Funktioniert schon ziemlich gut, nur werden nun lediglich 2 Zellen miteinander verbunden.
Kann das scrip auch so angepasst werden, wenn in 4-8 zellen nacheinander der selbe wert steht und somit alle 4-8 zellen verbunden werden?
vienen dank.
gruss david
VIelen Dank. Funktioniert schon ziemlich gut, nur werden nun lediglich 2 Zellen miteinander verbunden.
Kann das scrip auch so angepasst werden, wenn in 4-8 zellen nacheinander der selbe wert steht und somit alle 4-8 zellen verbunden werden?
vienen dank.
gruss david
Antwort 3 von Risatara2
Moin moin,
OK, das is etwas härter, aber da hab ichs denn auch schon für dich.. Bei mir funktionierts, aber mach dir lieber vorher ne Sicherheitskopie.
Risatara
OK, das is etwas härter, aber da hab ichs denn auch schon für dich.. Bei mir funktionierts, aber mach dir lieber vorher ne Sicherheitskopie.
Sub verbbindeZellen()
Dim Spalte As Integer
Dim Startspalte As Integer
Dim Endspalte As Integer
Dim Wert As Variant
Dim X As Integer
Const Maxspalte As Integer = 100
Dim Arbeitsblatt As Worksheet
Startspalte = 1
Set Arbeitsblatt = ThisWorkbook.ActiveSheet
With Arbeitsblatt
For Spalte = 1 To Maxspalte
If Cells(10, Spalte) <> Wert Then
Endspalte = Spalte - 1
If Startspalte < Endspalte Then
For X = Startspalte + 1 To Endspalte
Cells(10, X).Value = ""
Next X
Range(Cells(10, Startspalte), Cells(10, Endspalte)).Merge
End If
Startspalte = Spalte
Wert = Cells(10, Spalte).Value
End If
Next Spalte
End With
End Sub
Risatara
Antwort 4 von Lemming
Hallo Risatara
Das ist ja genial.
Wenn du noch eine optimierungen machen könntest dann bin ich mega happy:
die zeilen, welche den wert null haben soll er belassen.
vielen herzlichen dank.
david
Das ist ja genial.
Wenn du noch eine optimierungen machen könntest dann bin ich mega happy:
die zeilen, welche den wert null haben soll er belassen.
vielen herzlichen dank.
david
Antwort 5 von Risatara2
LOOL, siehste, das war bei der ersten umstellung passiert :)
Antwort 6 von Risatara2
OK, hier der nächste Versuch:
Sub verbbindeZellen()
Dim Spalte As Integer
Dim Startspalte As Integer
Dim Endspalte As Integer
Dim Wert As Variant
Dim X As Integer
Const Maxspalte As Integer = 100
Dim Arbeitsblatt As Worksheet
Startspalte = 1
Set Arbeitsblatt = ThisWorkbook.ActiveSheet
With Arbeitsblatt
For Spalte = 1 To Maxspalte
If Cells(10, Spalte) <> Wert Then
Endspalte = Spalte - 1
If Startspalte < Endspalte And Wert <> "" Then
For X = Startspalte + 1 To Endspalte
Cells(10, X).Value = ""
Next X
Range(Cells(10, Startspalte), Cells(10, Endspalte)).Merge
End If
Startspalte = Spalte
Wert = Cells(10, Spalte).Value
End If
Next Spalte
End With
End Sub
Antwort 7 von Lemming
Perfekt. Vielen herzlichen Dank.
Liebe Grüsse und bald einen guten rutsch ins neue jahr :-)
David
Liebe Grüsse und bald einen guten rutsch ins neue jahr :-)
David
Antwort 8 von Risatara2
Danke gleichfalls und danke für rückmeldung

