Копирование только цвета ячейки в Excel

Вопрос или проблема

У меня есть диапазон значений с ячейками, закрашенными по правилу условного форматирования. Я хочу скопировать только цвета в другой диапазон таких же размеров, в который я смогу вставлять различные значения.

Вы можете прочитать DisplayFormat и использовать его как обычный формат, например:

Sub CopyDisplay()
    Dim cell As Range, clr As Long
    Range("C2:D5").Offset(, 5).ClearFormats
    For Each cell In Range("C2:D5")
        clr = cell.DisplayFormat.Interior.Color
        If clr <> vbWhite Then _
            cell.Offset(, 5).Interior.Color = clr
    Next cell
End Sub

Копировать формат

Ответ или решение

Для копирования только цвета ячеек, окрашенных с помощью правила условного форматирования, в Excel можно воспользоваться макросом на VBA. Ниже приведённый код позволяет скопировать цвет заливки из диапазона ячеек и применить его к другому диапазону той же величины. В этом примере ячейки из диапазона C2:D5 будут скопированы в диапазон, начиная с колонки H, то есть с ячеек H2 до H5 и H2 до I5.

Вот как это сделать:

Sub CopyDisplay()
    Dim cell As Range, clr As Long
    ' Очищаем форматы в целевом диапазоне H2:I5
    Range("H2:I5").ClearFormats
    ' Проходим по каждой ячейке в диапазоне C2:D5
    For Each cell In Range("C2:D5")
        ' Получаем цвет заливки ячейки
        clr = cell.DisplayFormat.Interior.Color
        ' Проверяем, что цвет не белый
        If clr <> vbWhite Then _
            ' Копируем цвет в соответствующую ячейку в диапазоне H2:I5
            cell.Offset(0, 5).Interior.Color = clr
    Next cell
End Sub

Пояснения к коду:

  1. Диапазон исходных данных: В этом примере исходные данные находятся в диапазоне C2:D5.
  2. Целевой диапазон: Цвета будут скопированы в диапазон H2:I5. Если вам нужно скопировать в другой диапазон, измените значение в cell.Offset(0, 5), где 5 — это сдвиг на 5 колонок вправо.
  3. Очистка форматов: Перед копированием цветов очищаем форматы целевого диапазона, чтобы избежать наложения форматов.
  4. Цвета: Проверяется, что цвет ячейки не белый, для того чтобы не переписывать белым цветом, что будет видно только в случае, если ячейка не окрашена.

Как использовать:

  1. Откройте Excel и нажмите ALT + F11, чтобы открыть редактор VBA.
  2. Вставьте новый модуль через Insert > Module.
  3. Скопируйте и вставьте приведённый выше код в открывшееся окно.
  4. Закройте редактор и вернитесь в Excel.
  5. Нажмите ALT + F8, выберите CopyDisplay, и нажмите Run.

Теперь вы сможете скопировать только цвета ячеек из одного диапазона в другой, не перемещая при этом значения.

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

Капча загружается...