Excel Условное форматирование баров данных на основе цвета

Я не могу найти способ изменить цвет панели данных Excel на основе значения. Текущие параметры форматирования позволяют использовать только разные цвета на основе положительных / отрицательных значений. В настоящее время я использую Excel 2010.

Я хотел бы, чтобы цвет панели данных отображался как "красный", если значение находится между 0-0.3, "желтый" если значение между 0.3-0.6, и "зеленый" если значение если между >0.6.

был бы очень признателен за любую информацию, которую люди могли бы делиться.

спасибо,

TB

5 ответов


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

условные цвета могут быть достигнуты с помощью цветовых шкал.

то, что вы описываете, звучит как комбинация двух, но этого не существует в Excel, и я не вижу простого способа взломать его.

вы можете использовать своего рода "диаграмму" в ячейке, которая была популярна до появления спарклайнов. Используйте формулу для повторения характер (на скриншоте это символ g отформатирован шрифтом Marlett), а затем используйте Условное форматирование для изменения цвета шрифта.

enter image description here

для более приятного ощущения "бара" используйте символ Юникода 2588 с обычным шрифтом.

enter image description here

Edit: не каждый символ Юникода представлен в каждом шрифте. В этом случае unicode 2588 отлично подходит для шрифта Arial, но не для калибра по умолчанию Excel. Выберите шрифты соответственно. Диалоговое окно Вставка > Символ поможет найти подходящие символы.

enter image description here


в вашем случае выделите ячейку будет более подходящим, так как мы не можем сформировать панель данных с несколькими цветами
Условные Formationg >Управление Правилами...>Новое Правило
В разделе Выбор типа правила выберите "использовать формулу для определения, какие ячейки форматировать" и установите свои правила там
enter image description here


в этой статье объясняется трюк, который выполняет эту работу:

http://www.excel-user.com/2012/05/conditional-formatting-bar-chart.html

enter image description here


я настраиваю Условное форматирование в ячейке рядом со строкой данных, которая изменяет цвет на основе значения в целевой ячейке (зеленый, желтый, красный, оранжевый). Затем я просматриваю VBA ниже, чтобы обновить цвет панели данных на основе условного форматирования в соседней ячейке.

Dim intCount As Integer
Dim db As DataBar

On Error Resume Next
For intCount = 9 To 43 'rows with data bars to be updated
    Worksheets("Worksheet Name").Cells(intCount, 10).FormatConditions(1).BarColor.Color = Worksheets("Worksheet Name").Cells(intCount, 11).DisplayFormat.Interior.Color
Next intCount

вместо создания условного форматирования для диапазона ячеек я условно отформатировал каждую ячейку отдельно, используя VBA на основе двух ниже. Результат показан в ссылке под кодом. Надеюсь, это поможет.

' The purpose of this sub is to add a data bar to an individual cell
' The value in the cell is expected to be decimal numbers between -1 and 1
' If the value is greater than or equal to -0.1 and less than or equal to 0.1, then display green bars
' If the value is less than -0.1 and greater than -.2, OR greater than 0.1 and less than 0.2 then yellow bars
' All other scenarios display red bars
Sub Add_Data_Bar(rngCell As Range, dblValue As Double)

' Clears existing conditional formatting from the cell
' Adds a new data bar to the cell
With rngCell.FormatConditions
    .Delete
    .AddDatabar
End With

    ' Creates a databar object for the databar that has been added to the cell
    Dim dbar As Databar
    Set dbar = rngCell.FormatConditions(rngCell.FormatConditions.Count)

        ' Sets the databar fill type to display as gradient
        dbar.BarFillType = xlDataBarFillGradient

        ' Sets the databar border style
        dbar.BarBorder.Type = xlDataBarBorderSolid

        ' Sets the databar axis position
        dbar.AxisPosition = xlDataBarAxisMidpoint

        ' Sets the minimum limit of the data bar to -1
        With dbar.MinPoint
            .Modify newtype:=xlConditionValueNumber, newvalue:=-1
        End With

        ' Sets the maximum limit of the data bar to +1
        With dbar.MaxPoint
            .Modify newtype:=xlConditionValueNumber, newvalue:=1
        End With

            ' Sets the color based on what value has been passed to the sub
            ' Green
            If dblValue <= 0.1 And dblValue >= -0.1 Then

                With dbar
                    .BarColor.Color = RGB(99, 195, 132) ' Green
                    .BarBorder.Color.Color = RGB(99, 195, 132)
                End With

            ' Yellow
            ElseIf (dblValue > 0.1 And dblValue <= 0.2) Or (dblValue < -0.1 And dblValue >= -0.2) Then

                With dbar
                    .BarColor.Color = RGB(255, 182, 40) ' Yellow
                    .BarBorder.Color.Color = RGB(255, 182, 40)
                End With

            ' Red
            Else

                With dbar
                    .BarColor.Color = RGB(255, 0, 0) ' Red
                    .BarBorder.Color.Color = RGB(255, 0, 0)
                End With

            End If

End Sub


' Applies the databar formatting to each cell in a range
‘ Call this on the Worksheet_Change event so that the formatting updates when data is refreshed
Sub Loop_Through_Range()

' Range to be looped through
Dim rng As Range
Set rng = Sheet1.Range("A2:A22")

' Range for For Loop
Dim cell As Range

    ' Loops through each cell in your range
    For Each cell In rng.Cells
        Call Add_Data_Bar(cell, cell.Value)
    Next

End Sub

Посмотреть В Таблице