Excel 2007/2010 цветовой шкалы условного форматирования на основе формулы - PullRequest
5 голосов
/ 19 апреля 2011

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

     A   B   C
1    H1  H2  H3
2    1   1   3
3    4   5   4

Как применить условное форматирование со следующими условиями:

  • Только ячейки заголовка (H1, H2, H3) окрашены
  • Раскраска по 2 или 3 цветам
  • Значения, используемые для вычисления цвета, должны быть A2 / A3, B2 / B3, C2 / C3 (диапазон 0-1)

Примечание: я не ищу решение VBA, поскольку я могу сделать свое собственное, но если у вас есть сумасшедший 1 лайнер, пожалуйста, скажите:)
Примечание: я не хочу применять много правил, таких как if x<0.3 red, if 0.3<x<0.6 orange и т. Д.

Есть ли чистое решение для этого?
Можно ли применять трехцветную шкалу на основе значения формулы?

Ответы [ 2 ]

1 голос
/ 21 апреля 2011

Я думаю, вы ищете что-то изящное, чего, к сожалению, не существует. Я просто вижу два варианта.

Вы можете выполнить условное форматирование с тремя условиями или даже с двумя, если хотите использовать цвет ячейки по умолчанию в качестве одного из трех (например, Formula Is = (A2 / A3) <0,3, Formula Is = (A2 / A3) <0,6, или как вы хотите, чтобы ваши пороговые значения были). Вы можете применить это форматирование вручную к одной ячейке заголовка в Excel и скопировать его во все заголовки; или примените его через VBA. </p>

Или вы можете раскрасить заголовки в VBA и разместить на листе кнопку, которая вызывает код для обновления цветов.

With Range("A1")
    For i = 1 To 3
        colorscale = .Cells(2, i).Value / .Cells(3, i).Value
        .Cells(1, i).Interior.Color = _
            RGB(colorscale * 255, colorscale * 255, _
            colorscale * 255) ' for example. Or pick your colors otherwise.
    Next i
End With

Мне кажется, что первый вариант (условное форматирование) лучше подходит, потому что он будет автоматически обновлять цвета на основе значений ячеек. Я должен признать, однако, я не совсем понимаю, почему вы ищете что-то «чище», чем это, потому что это на самом деле очень простое решение. Два условия составляют «много правил»? Ни по какой части английского языка ...

0 голосов
/ 23 апреля 2011

Вот адаптация кода Жана-Франсуа Корбетта, который берет цвет из красно-желто-зеленого градиента:

With Range("A1")
    For i = 1 To 3
        ColorScale = .Cells(2, i).Value / .Cells(3, i).Value
        If ColorScale < 0.5 Then
            red = 255
            green = ColorScale * 2 * 255
        Else
            red = (1 - ColorScale) * 2 * 255
            green = 255
        End If

        .Cells(1, i).Interior.Color = RGB(red, green, 0)
    Next i
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...