Вопрос или проблема
У меня есть диапазон значений с ячейками, закрашенными по правилу условного форматирования. Я хочу скопировать только цвета в другой диапазон таких же размеров, в который я смогу вставлять различные значения.
Вы можете прочитать 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
Пояснения к коду:
- Диапазон исходных данных: В этом примере исходные данные находятся в диапазоне C2:D5.
- Целевой диапазон: Цвета будут скопированы в диапазон H2:I5. Если вам нужно скопировать в другой диапазон, измените значение в
cell.Offset(0, 5)
, где 5 — это сдвиг на 5 колонок вправо. - Очистка форматов: Перед копированием цветов очищаем форматы целевого диапазона, чтобы избежать наложения форматов.
- Цвета: Проверяется, что цвет ячейки не белый, для того чтобы не переписывать белым цветом, что будет видно только в случае, если ячейка не окрашена.
Как использовать:
- Откройте Excel и нажмите
ALT + F11
, чтобы открыть редактор VBA. - Вставьте новый модуль через
Insert
>Module
. - Скопируйте и вставьте приведённый выше код в открывшееся окно.
- Закройте редактор и вернитесь в Excel.
- Нажмите
ALT + F8
, выберитеCopyDisplay
, и нажмитеRun
.
Теперь вы сможете скопировать только цвета ячеек из одного диапазона в другой, не перемещая при этом значения.