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

Когда мы запускаем этот макрос, мы получаем следующий вывод:

VBA объединяет ячейки с одинаковыми значениями

Обратите внимание, что все ячейки, содержащие одно и то же название конференции и название команды , были объединены.

Обратите внимание, что мы использовали оператор cell.VerticalAlignment = xlCenter , чтобы указать, что текст должен быть центрирован по вертикали в объединенных ячейках.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:

VBA: как подсчитать количество используемых столбцов
VBA: как изменить высоту строки
VBA: как изменить ширину столбца

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *