我在Excel工作表中有一列数据,它具有正值和负值。我想做的是应用条件格式设置(颜色渐变),例如从深绿色到浅绿色(对于正值),从浅红色到深红色(对于负值)。
但是,我似乎无法做到这一点。如果我使用从最大值到零的条件格式,零为浅绿色,那么所有负值也将最终变为浅绿色。有没有一种方法可以使条件格式仅适用于特定值,而不能超出?我可以类似地为负值制作条件格式,但是再次它将正值变成浅红色。如果我都在同一张纸上,则以优先级最高的那个为准。
更新:尽管这确实很丑陋,但我还是决定尝试找出哪些单元格大于0(在这种情况下,实际上是中点值,〜1.33
),哪些更低,并为这些单元格明确设置单元格引用。所以我尝试了如下定义的条件格式(正绿色刻度):
<x:conditionalFormatting sqref="$E$5 $E$6 $E$10 $E$13 $E$15 $E$17 $E$18 $E$19 $E$22 $E$24 $E$25..." xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<x:cfRule type="colorScale" priority="1">
<x:colorScale>
<x:cfvo type="num" val="1.13330279612636" />
<x:cfvo type="num" val="1.91050388235334" />
<x:color rgb="d6F4d6" />
<x:color rgb="148621" />
</x:colorScale>
</x:cfRule>
</x:conditionalFormatting>
像这样(红色负标度):
<x:conditionalFormatting sqref="$E$4 $E$7 $E$8 $E$9 $E$11 $E$12 $E$14 $E$16 $E$20 $E$21 $E$23 $E$26 $E$28 $E$29 $E$30..." xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<x:cfRule type="colorScale" priority="1">
<x:colorScale>
<x:cfvo type="num" val="0.356101709899376" />
<x:cfvo type="num" val="1.13330279612636" />
<x:color rgb="985354" />
<x:color rgb="f4dddd" />
</x:colorScale>
</x:cfRule>
</x:conditionalFormatting>
这很棒!一直到您尝试排序的位置为止(此表上有一个自动过滤器),它会破坏单元格分配。因此,现在我的值大于
1.33
,应该(并且确实)应用了绿色渐变规则,但现在由红色渐变引用了(因此最终变为淡红色)。我尝试了相对和绝对单元格引用(即减去
$
),但这似乎也不起作用。 最佳答案
我还没有找到使用默认Excel条件格式进行这项工作的方法。可以在VBA中创建自己的条件格式算法来启用此功能,但是:
Sub UpdateConditionalFormatting(rng As Range)
Dim cell As Range
Dim colorValue As Integer
Dim min, max As Integer
min = WorksheetFunction.min(rng)
max = WorksheetFunction.max(rng)
For Each cell In rng.Cells
If (cell.Value > 0) Then
colorValue = (cell.Value / max) * 255
cell.Interior.Color = RGB(255 - colorValue, 255, 255 - colorValue)
ElseIf (cell.Value < 0) Then
colorValue = (cell.Value / min) * 255
cell.Interior.Color = RGB(255, 255 - colorValue, 255 - colorValue)
End If
Next cell
End
End Sub
上面的代码将生成以下配色方案,并且可以轻松修改以适合您所考虑的任何调色板:
您可以在宏中使用此代码,也可以将其放入Worksheet_Change事件中并使其自动更新(请注意,当安装在Worksheet_Change事件处理程序中时,您将失去撤消功能):
Sub Worksheet_Change(ByVal Target As Range)
UpdateConditionalFormatting Range("A1:A21")
End Sub
关于excel - 硬停止条件格式化颜色渐变,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33925935/