Я почти уверен, что ваше время обработки увеличивается, а goto
заставляет вас повторять все снова и снова каждый раз после каждого слияния
Изменить, чтобы учесть столбец A
и предотвратить появление первого столбца. ячейки для слияния с ячейками вне myRange
:
Sub MergeSimilarCells()
Dim i As Long
Dim myCol As String
Set myRange = Range("K1:L30")
myCol = Left(myRange.Address(True, False), InStr(myRange.Offset(0, 1).Address(True, False), "$") - 1)
If Not Intersect(myRange, Range(myCol & ":" & myCol)).Address = myRange.Address Then
Set myRange = Range(Replace(myRange.Address, Left(myRange.Address(True, False), _
InStr(myRange.Address(True, False), "$")), Left(myRange.Offset(0, 1).Address(True, False), _
InStr(myRange.Offset(0, 1).Address(True, False), "$"))))
For i = myRange.Cells.Count To 1 Step -1
If myRange.Item(i).Value = myRange.Item(i).Offset(0, -1).Value And Not IsEmpty(myRange.Item(i)) Then
Range(myRange.Item(i), myRange.Item(i).Offset(0, -1)).Merge
myRange.Item(i).VerticalAlignment = xlCenter
myRange.Item(i).HorizontalAlignment = xlCenter
End If
Next
End If
End Sub
Чтобы выяснить, почему myRange
должен начинаться в столбце B
: Offset(0, -1)
любой ячейки в столбце A
, возникнет ошибкапоскольку слева от A
.
нет столбца.