基于公式的Excel 2007/2010颜色比例条件格式化

5
假设我有以下表格结构(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解决方案,因为我可以自己制作,但如果您有一些疯狂的一行代码,请告诉我 :)
注意:我不想应用很多规则,如if x < 0.3 red,if 0.3 < x < 0.6 orange等。
是否有任何简洁的解决方案?
基于公式的值,是否可以应用三种颜色比例尺?

你是在问是否可能在没有条件的情况下进行条件格式化吗? - Jean-François Corbett
不,我的问题是关于条件格式的,是否可以与公式一起使用3种颜色渐变样式;因此,我可以根据涉及其他单元格的公式结果进行着色,而不是基于单元格值进行着色。 - Dan Manastireanu
如果是非常简短的VBA脚本,我也会接受。我正在寻找一个快速而不太正式的解决方案 :) 我知道如何编写一个迭代所有标题、计算颜色的长解决方案……但只是为了好玩,我想看看一些聪明的解决方案:D - Dan Manastireanu
2个回答

1

我认为你正在寻找一些很棒的东西,但不幸的是它并不存在。我只看到两个选项。

你可以使用三个条件进行条件格式化,甚至只用两个条件,如果你想将默认单元格颜色作为其中之一(例如,公式为=(A2/A3)<0.3,公式为=(A2/A3)<0.6,或者任何你想要的阈值值)。你可以在 Excel 中手动应用此格式化到一个标题单元格上,并将其复制到所有标题上;或通过 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

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

这不仅仅是两个规则。我想看到基于结果的从红色到黄色再到绿色的完整渐变,该结果可以是任何子单元分数。我希望能够使用某些直接的API计算出这个渐变,但我认为没有这样的东西可用。 - Dan Manastireanu
啊哈。“2或3色阶”我以为你是指有两种或三种可能颜色的级别。你只是指RGB。 - Jean-François Corbett

0
这是Jean-François Corbett代码的改编版本,它从红-黄-绿渐变中获取颜色:
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

Excel 2007是否支持任意单元格颜色?还是仍然像Excel 2003一样限制在40种颜色调色板中?(我仍在使用2003。) - Jean-François Corbett
我相信是这样的,我刚刚在Excel 2010中运行了一个从1到100的循环,并得到了一个漂亮的渐变。(至少在家里我没有2007) - Dan Manastireanu
不错。调色板已经过时了三十年! - Jean-François Corbett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接