Mat*_*and 11 excel formatting conditional openxml
我在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>
Run Code Online (Sandbox Code Playgroud)
就像这样(负红色刻度):
<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>
Run Code Online (Sandbox Code Playgroud)
这很棒!一直到你尝试排序的点(我在这张表上有一个自动过滤器),它搞砸了单元格分配.所以现在我有这样的值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
Run Code Online (Sandbox Code Playgroud)
上面的代码将生成以下颜色方案,并且可以轻松修改以适合您想到的任何调色板:
您可以在宏中使用此代码,或将其放入Worksheet_Change事件并自动更新(请注意,当安装在Worksheet_Change事件处理程序中时,您将失去撤消功能):
Sub Worksheet_Change(ByVal Target As Range)
UpdateConditionalFormatting Range("A1:A21")
End Sub
Run Code Online (Sandbox Code Playgroud)