Excel 基于颜色的条件格式数据条
Excel Conditional Formatting Data Bars based on Color
我找不到根据值更改 Excel 数据栏颜色的方法。当前的格式选项仅允许基于 positive/negative 值的不同颜色。我目前使用的是 Excel 2010.
如果值在 0-0.3 之间,我希望数据条的颜色显示为 'red',如果值在 0.3-0.6 之间,则显示为 'yellow',并且 'green' 如果值介于 >0.6.
非常感谢人们可以分享任何信息。
谢谢,
TB
数据条每组只支持一种颜色。这个想法是数据栏的长度为您指示高、中或低。
条件色可以用色标来实现。
您所描述的听起来像是两者的结合,但 Excel 中不存在这种情况,而且我没有找到破解它的简单方法。
您可以使用一种在迷你图出现之前很流行的内嵌式 "chart"。使用公式重复一个字符(在屏幕截图中是字符 g
格式化为 Marlett 字体),然后使用条件格式更改字体颜色。
为了更好的 "bar" 感觉,请使用带有常规字体的 unicode 字符 2588。
编辑:并非每个 Unicode 字符都以每种字体表示。在这种情况下,unicode 2588 可以很好地显示 Arial 字体,但不能显示 Excel 的默认 Calibri。 Select 你的字体相应。插入 > 符号对话框将有助于找到合适的字符。
在你的情况下,突出显示单元格会更合适,因为我们无法形成具有多种颜色的数据栏
条件形成 > 管理规则...> 新规则
在 Select 规则类型下,选择 "Use a formula to determince which cells to format" 并在那里设置您的规则
我在与数据栏相邻的单元格中设置条件格式,根据目标单元格中的值(绿色、黄色、红色、橙色)改变颜色。然后我循环遍历下面的 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 分别有条件地格式化每个单元格。结果显示在代码下方的 link 中。希望这有帮助。
' 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
Worksheet View
我找不到根据值更改 Excel 数据栏颜色的方法。当前的格式选项仅允许基于 positive/negative 值的不同颜色。我目前使用的是 Excel 2010.
如果值在 0-0.3 之间,我希望数据条的颜色显示为 'red',如果值在 0.3-0.6 之间,则显示为 'yellow',并且 'green' 如果值介于 >0.6.
非常感谢人们可以分享任何信息。
谢谢,
TB
数据条每组只支持一种颜色。这个想法是数据栏的长度为您指示高、中或低。
条件色可以用色标来实现。
您所描述的听起来像是两者的结合,但 Excel 中不存在这种情况,而且我没有找到破解它的简单方法。
您可以使用一种在迷你图出现之前很流行的内嵌式 "chart"。使用公式重复一个字符(在屏幕截图中是字符 g
格式化为 Marlett 字体),然后使用条件格式更改字体颜色。
为了更好的 "bar" 感觉,请使用带有常规字体的 unicode 字符 2588。
编辑:并非每个 Unicode 字符都以每种字体表示。在这种情况下,unicode 2588 可以很好地显示 Arial 字体,但不能显示 Excel 的默认 Calibri。 Select 你的字体相应。插入 > 符号对话框将有助于找到合适的字符。
在你的情况下,突出显示单元格会更合适,因为我们无法形成具有多种颜色的数据栏
条件形成 > 管理规则...> 新规则
在 Select 规则类型下,选择 "Use a formula to determince which cells to format" 并在那里设置您的规则
我在与数据栏相邻的单元格中设置条件格式,根据目标单元格中的值(绿色、黄色、红色、橙色)改变颜色。然后我循环遍历下面的 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 分别有条件地格式化每个单元格。结果显示在代码下方的 link 中。希望这有帮助。
' 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
Worksheet View