Excel 2007/2010基于公式的色阶条件格式

时间:2011-04-19 12:37:05

标签: excel excel-2007 conditional-formatting

假设我有以下表结构(A1:C3)

     A   B   C
1    H1  H2  H3
2    1   1   3
3    4   5   4

如何应用具有以下条件的条件格式:

  • 只有标题单元格(H1,H2,H3)被着色
  • 着色方案是2或3色标度
  • 用于计算颜色的值应为A2 / A3,B2 / B3,C2 / C3(范围为0-1)

注意:我不是在寻找VBA解决方案,因为我可以自己做,但如果你有一些疯狂的1班轮,请告诉:)
注意:我不想应用很多规则,例如if x<0.3 redif 0.3<x<0.6 orange等。

这有什么清洁解决方案吗? 可以根据公式的值应用3色标度吗?

2 个答案:

答案 0 :(得分:1)

我认为你正在寻找一些不幸的东西。我只看到两个选项。

您可以使用三个条件进行条件格式化,或者如果要将默认单元格颜色用作三个条件之一,则可以进行条件格式化(例如公式Is =(A2 / A3)<0.3,公式Is =(A2 /A3)<0.6,或任何你想要的阈值值)。您可以在Excel中的一个标题单元格上手动应用此fomatting,并将其复制到所有标题;或通过VBA申请。

或者您可以在VBA中为标题着色,并在工作表上放置一个调用代码来更新颜色的按钮。

With Range("A1")
    For i = 1 To 3
        colorscale = .Cells(2, i).Value / .Cells(3, i).Value
        .Cells(1, i).Interior.Color = _
            RGB(colorscale * 255, colorscale * 255, _
            colorscale * 255) ' for example. Or pick your colors otherwise.
    Next i
End With

听起来像第一个选项(条件格式)更适合,因为它会根据单元格值自动更新颜色。不过我不得不承认,我不太清楚你为什么要寻找比这更“干净”的东西,因为它实际上是一个非常简单的解决方案。两个条件构成“很多规则”吗?不是任何一种英语语言......

答案 1 :(得分:0)

这是改编自Jean-FrançoisCorbett的代码,该代码采用红黄绿渐变的颜色:

With Range("A1")
    For i = 1 To 3
        ColorScale = .Cells(2, i).Value / .Cells(3, i).Value
        If ColorScale < 0.5 Then
            red = 255
            green = ColorScale * 2 * 255
        Else
            red = (1 - ColorScale) * 2 * 255
            green = 255
        End If

        .Cells(1, i).Interior.Color = RGB(red, green, 0)
    Next i
End With