Условное форматирование по группам в excel - PullRequest
0 голосов
/ 28 мая 2018

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

enter image description here

Идея состоит в том, что цветовая шкала должна быть сделана независимо для групп.В группе 1: 2 - это наименьшее значение, поэтому оно будет красным, а 50 - самым высоким и, следовательно, будет зеленым (даже если существуют значения, такие как 114 или 1467, это не должно влиять на этот диапазон, поскольку он принадлежит другой группе).

Заранее спасибо!

1 Ответ

0 голосов
/ 28 мая 2018

Если цветовая шкала внутри групп что-то вроде:

Public Sub FormatRanges()

    Dim rng1 As Range, rng2 As Range, rng3 As Range, rng As Long
    Application.ScreenUpdating = False

    With ActiveSheet

        Set rng1 = .Range("B1:B5")
        Set rng2 = .Range("B6:B10")
        Set rng3 = .Range("B11:B15")
        Dim myRanges()
        myRanges = Array(rng1, rng2, rng3)

        For rng = LBound(myRanges) To UBound(myRanges)
           ApplyFormatting myRanges(rng)
        Next rng

    End With
    Application.ScreenUpdating = True
End Sub

Public Sub ApplyFormatting(ByRef rng As Variant)

     rng.FormatConditions.Delete
    rng.FormatConditions.AddColorScale ColorScaleType:=3
    rng.FormatConditions(rng.FormatConditions.Count).SetFirstPriority
    rng.FormatConditions(1).ColorScaleCriteria(1).Type = _
        xlConditionValueLowestValue
    With rng.FormatConditions(1).ColorScaleCriteria(1).FormatColor
        .Color = 7039480
        .TintAndShade = 0
    End With
    rng.FormatConditions(1).ColorScaleCriteria(2).Type = _
        xlConditionValuePercentile
    rng.FormatConditions(1).ColorScaleCriteria(2).Value = 50
    With rng.FormatConditions(1).ColorScaleCriteria(2).FormatColor
        .Color = 8711167
        .TintAndShade = 0
    End With
    rng.FormatConditions(1).ColorScaleCriteria(3).Type = _
        xlConditionValueHighestValue
    With rng.FormatConditions(1).ColorScaleCriteria(3).FormatColor
        .Color = 8109667
        .TintAndShade = 0
    End With
End Sub

Пример данных:

data

Код входит в стандартный модульнажав Alt + F11, чтобы открыть VBE, затем щелкните правой кнопкой мыши в проекте и добавьте стандартный модуль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...