Вопрос :Можно ли заполнить каждую ячейку электронной таблицы цветом, значение градаций серого которого совпадает со значением ячейки?
Объяснение :
Предположим, у меня есть следующая электронная таблица:
Все значения лежат в диапазоне 0-255 (что соответствует 256 оттенкам серого). Теперь я хочу заполнить каждую ячейку цветом, значение которого равно значению в ячейке. Поэтому ожидаемый результат будет следующим:
Также обратите внимание, чтобы цвет шрифта в каждой ячейке был либо черным, либо белым в соответствии с цветом фона.
Есть ли в Excel простой метод, позволяющий выполнить это за несколько шагов или все сразу?
решение1
Создайте макрос, который проходит по вашим ячейкам, считывает значение в ячейке и назначает его цвету, как показано ниже:
Range("A1:A6").Interior.Color = RGB(200,160,35)
решение2
TheUser1024 прав, и я голосую за него.
Вот готовое к использованию решение:
Public Sub Demo()
Dim cel As Range
Dim myRange As Range
Set myRange = Range("A1:E10")
For Each cel In myRange
cel.Interior.Color = RGB(cel.Value, cel.Value, cel.Value)
If cel.Value > 127 Then
cel.Font.Color = RGB(0, 0, 0)
Else
cel.Font.Color = RGB(255, 255, 255)
End If
Next cel
End Sub
Редактировать:
Этот код не сломается в случае строк или отрицательных значений...
Public Sub Demo()
Dim cel As Range
Dim greytone As Long
Dim myRange As Range
Set myRange = Range("A1:E10")
For Each cel In myRange
greytone = CLng(Abs(Val(cel.Value)))
cel.Interior.Color = RGB(greytone, greytone, greytone)
If greytone > 127 Then
cel.Font.Color = RGB(0, 0, 0)
Else
cel.Font.Color = RGB(255, 255, 255)
End If
Next cel
End Sub