Я хочу объединить ячейки в столбцах, если во всей строке одинаковое значение.
Например. Если диапазон A1: G1 совпадает с диапазоном A2: G2, я хочу объединить ячейки A1: A2, от B1: B2 до G1: G2.
С моим кодом ниже я получаю ошибку времени выполнения 13: несоответствие типов. Я предполагаю, что проблема заключается в проверке равенства двух диапазонов.
Dim i As Long, j As Long, row as Long
row = Cells(Rows.Count, 6).End(xlUp).row
For i = row To 7 Step -1
If Range(Cells(i, 7), Cells(i, 24)).Value = Range(Cells(i - 1, 7), Cells(i - 1, 24)).Value Then
For j = 7 To 24 Step 1
Range(Cells(i, j), Cells(i - 1, j)).Merge
Next j
End If
Next i
Вопрос в том, как проверить, равны ли значения обоих диапазонов?
Редактировать после комментариев:
С кодом ниже это на самом деле работает
Dim i As Long, j As Long, row As Long
row = Cells(Rows.Count, 6).End(xlUp).row
For i = row To 7 Step -1
If Join(Application.Transpose(Application.Transpose(Range(Cells(i, 7), Cells(i, 24)))), Chr(0)) = Join(Application.Transpose(Application.Transpose(Range(Cells(i - 1, 7), Cells(i - 1, 24)))), Chr(0)) Then
For j = 7 To 24 Step 1
Range(Cells(i, j), Cells(i - 1, j)).Merge
Application.DisplayAlerts = False
Next j
End If
Next i
Однако мне интересно, почему вы (@ Pᴇʜ) разделили функцию для первой и последней строк.
Кроме того, с моим кодом, без объединения ячеек, у меня был цикл для изменения цвета ячейки:
Dim row As Long
row = Cells(Rows.Count, 6).End(xlUp).ro
Do Until IsEmpty(Cells(row, 3))
If row Mod 2 <> 0 Then
Range(Cells(row, 3), Cells(row, 24)).Interior.Color = RGB(217, 225, 242)
Else
Range(Cells(row, 3), Cells(row, 24)).Interior.Color = xlNone
End If
row = row + 1
Loop
Как бороться с этим после объединения клеток?