将 Excel 条件格式公式调整为选定范围

Posted

技术标签:

【中文标题】将 Excel 条件格式公式调整为选定范围【英文标题】:Adjusting Excel Conditional Formatting Formula to selected range 【发布时间】:2014-01-23 16:43:57 【问题描述】:

我正在尝试在各种选定范围内运行一系列宏,以检查单元格的数值是否大于指定值。这里的示例是针对值大于 0.7 的单元格,其他宏类似,只是它们使用不同的大于值。

我的问题似乎在于用于确定条件格式的公式;如果公式调用我选择的列中的一个单元格,宏就可以工作,否则它什么也不做。

示例:我选择单元格 D5:D15,然后运行以下宏:

Sub Toluene()
'
' Toluene Macro
' Apply conditional formatting to Toluene cells with values greater than 0.7
'

'
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
    "=AND(ISNUMBER(D5),D5>0.7)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
    .Bold = True
    .Italic = True
    .TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorAccent6
    .TintAndShade = 0.799981688894314
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub

效果很好。但是,如果我选择单元格 G5:G10,并尝试对其应用相同的宏,则不会发生任何事情(未应用正确的条件格式)。

我是否正确地认为我需要以某种方式改变我的公式

"=AND(ISNUMBER(D5),D5>0.7)"

反映所选的列,如果是这样,是否有人对我如何做到这一点有建议?

【问题讨论】:

【参考方案1】:

尝试使用R1C1参考风格:

Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=AND(ISNUMBER(RC),RC>0.7)"

或者如果你不喜欢这个,你可以使用更复杂的代码:

Dim topLeftAddr As String

topLeftAddr = Replace(Selection.Cells(1, 1).Address, "$", "")

Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=AND(ISNUMBER(" & topLeftAddr & ")," & topLeftAddr & ">0.7)"

【讨论】:

太棒了 - 非常感谢 simoco - 使用 R1C1 参考有效!

以上是关于将 Excel 条件格式公式调整为选定范围的主要内容,如果未能解决你的问题,请参考以下文章

excel第一个单元格选择不同的下拉内容后,后面的单元格会填充颜色

Hive进行数据比对问题,求帮助

EXCEL条件格式拖动。

excel条件格式不起作用?

应用规则后 Excel 条件格式公式更改

excel a列输入数值时 b列显示红色