4

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

Пояснение:

Считайте, что у меня есть электронная таблица следующим образом:

Все значения лежат в диапазоне 0-255 (что соответствует 256 оттенкам серого). Теперь я хочу заполнить каждую ячейку цветом, значение которого равно значению в ячейке. Таким образом, ожидаемый результат выглядит следующим образом:

Также обратите внимание, что цвет шрифта в каждой ячейке либо черный, либо белый, соответствующий цвету фона.

Есть ли в Excel простой способ выполнить это за несколько шагов или сразу?

2 ответа2

5

Создайте макрос, который перебирает ваши ячейки, читает значение в ячейке и присваивает его цвету так:

Range("A1:A6").Interior.Color = RGB(200,160,35)
3

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .