Автоматическая заливка цветов в соответствии со значениями в ячейке электронной таблицы

Автоматическая заливка цветов в соответствии со значениями в ячейке электронной таблицы

Вопрос :Можно ли заполнить каждую ячейку электронной таблицы цветом, значение градаций серого которого совпадает со значением ячейки?

Объяснение :

Предположим, у меня есть следующая электронная таблица:

введите описание изображения здесь

Все значения лежат в диапазоне 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

Связанный контент