Vba: как объединить ячейки с одинаковыми значениями
Вы можете использовать следующий синтаксис в VBA для объединения ячеек с одинаковыми значениями в определенном диапазоне:
Sub MergeSameCells()
'turn off display alerts while merging
Application.DisplayAlerts = False
'specify range of cells for merging
Set myRange = Range(" A1:C13 ")
'merge all same cells in range
MergeSame:
For Each cell In myRange
If cell.Value = cell.Offset(1, 0).Value And Not IsEmpty(cell) Then
Range(cell, cell.Offset(1, 0)).Merge
cell.VerticalAlignment = xlCenter
GoTo MergeSame
End If
Next
'turn display alerts back on
Application.DisplayAlerts = True
End Sub
Этот конкретный макрос объединяет ячейки с одинаковыми значениями в диапазоне A1:C13 .
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: объединить ячейки с одинаковыми значениями в VBA
Предположим, у нас есть следующий набор данных в Excel, содержащий информацию об очках, набранных различными баскетболистами:
Предположим, мы хотим объединить ячейки с одинаковыми значениями в последовательных строках.
Для этого мы можем создать следующий макрос:
Sub MergeSameCells()
'turn off display alerts while merging
Application.DisplayAlerts = False
'specify range of cells for merging
Set myRange = Range(" A1:C13 ")
'merge all same cells in range
MergeSame:
For Each cell In myRange
If cell.Value = cell.Offset(1, 0).Value And Not IsEmpty(cell) Then
Range(cell, cell.Offset(1, 0)).Merge
cell.VerticalAlignment = xlCenter
GoTo MergeSame
End If
Next
'turn display alerts back on
Application.DisplayAlerts = True
End Sub
Когда мы запускаем этот макрос, мы получаем следующий вывод:
Обратите внимание, что все ячейки, содержащие одно и то же название конференции и название команды , были объединены.
Обратите внимание, что мы использовали оператор cell.VerticalAlignment = xlCenter , чтобы указать, что текст должен быть центрирован по вертикали в объединенных ячейках.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:
VBA: как подсчитать количество используемых столбцов
VBA: как изменить высоту строки
VBA: как изменить ширину столбца