【问题标题】:How to highlight cells when using Excel VBA conditional formatting?使用 Excel VBA 条件格式时如何突出显示单元格?
【发布时间】:2016-01-26 00:57:42
【问题描述】:

好的,所以我被困住了,如果有任何帮助或建议,我将不胜感激。

我试图突出显示满足两个条件的单元格。也就是说,在这种特殊情况下,如果一个单元格中的绝对值大于 3,并且该绝对值大于相邻单元格中的另一个值,则该单元格将被突出显示。例如,我的数据如下所示:

-1.2、1.71、6.26、10.2、3.3、0.4 4 -4

因此,如果左侧六个值中的任何一个的绝对值大于 3 并且也大于 4(右侧相邻的四个),那么它们将被突出显示。相邻的值会改变,并不总是四。我需要在 VBA 中执行此操作,并且我希望代码以这样一种方式工作,即当我移动到与上述类似的另一行数据时,测试两个条件并突出显示正确的值。这就是我目前在 VBA 中编写的内容。

Selection.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=AND(ABS(RC) >3,ABS(RC) >RC[9])"
  Selection.FormatConditions(1).Interior.ColorIndex = 45

问题:

我正在使用 R1C1 格式,因为我希望它在我将此代码应用于另一行数据时自动更新。但目前此代码仅突出显示数字 10.2 而不是 6.26 以及它应该。我认为如果我将代码保留为 ABS(RC) 这将引用当前单元格值?请指教。此外,数字 4(相邻单元格)是第一个值 -1.2 的九列 - 因此我写 RC[9]。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    据我了解,您正在尝试更改每个单元格的 1 个条件的引用,但保留第二个条件的引用(检查每个单元格的值,并根据固定的最后一个单元格检查其值)。

    我用过

    Sub highlight()
    
    Selection.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=AND(ABS(RC) >3,ABS(RC) > abs(indirect(address(" & Selection.Row & "," & _
            (Selection.Column + Selection.Columns.Count - 1) & "))))"
    Selection.FormatConditions(1).Interior.ColorIndex = 45
    
    End Sub
    

    首先,我选择范围 A1:H1(这是我保存数字的地方),然后运行此宏,最终突出显示 6.26 和 10.2。

    【讨论】:

    • 谢谢。但是有两件事:1)第二个条件的引用也是相对的(不固定)2)我不会突出显示包含第二个条件的列,如果我尝试您慷慨提供的代码而不突出显示具有第二个条件的列即工作表中的 H1 然后它突出显示错误的值(也突出显示 3.27)。间接地址位也有点复杂。我想要的是,如果该单元格的绝对值大于第二个条件的值(并且大于 3 - 条件 1),我选择突出显示的单元格
    • 为什么我必须突出显示相邻的值才能使它起作用?即包含第二个条件的单元格?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    相关资源
    最近更新 更多