【发布时间】:2018-05-15 23:21:20
【问题描述】:
尝试创建一个相对简单的宏来循环遍历除开头(命名)的工作表之外的每个工作表,并根据相关单元格的数值平均值对特定列中所有使用的单元格应用条件格式.
我一直无法将条件格式公式正确输入到单元格中。
示例:我想要的公式是 =R2>2(Average(R2:R*)) (其中 * 是最后使用的行)
但是,我在公式框中得到的是:="R2>2(Average(R2:R230))"(230 是该表上最后使用的行)
从脚本中删除语音标记会使用“预期:语句结束”来中断它
代码在这里,因为它也可能有其他问题:
Sub Bread()
Dim LastRow As Long
For Each Sheet In Sheets
If Sheet.Name = "Base Details" Then
Else
Sheet.Cells.ClearFormats
LastRow = Sheet.UsedRange.Rows.Count
With Sheet.Range("R2:R" & LastRow)
.FormatConditions.Add Type:=xlExpression, Formula1:="R2" & ">" & "2" & "(" & "Average" & "(" & "R2:R" & LastRow & "))"
With .FormatConditions(.FormatConditions.Count)
.SetFirstPriority
With .Interior
.Color = RGB(255, 0, 0)
End With
End With
End With
With Sheet.Range("R2:R" & LastRow)
.FormatConditions.Add Type:=xlExpression, Formula1:="R2" & "<" & "0.1" & "*" & "(" & "Average" & "(" & "R2:R" & LastRow & "))"
With .FormatConditions(.FormatConditions.Count)
.SetFirstPriority
With .Interior
.Color = RGB(255, 255, 0)
End With
End With
End With
End If
Next Sheet
End Sub
非常感谢!
【问题讨论】:
-
您需要在
2和(之间有一个* -
这并不能解决您的问题,但我相信以下内容更具可读性:
Formula1:="R2>2*(Average(R2:R" & LastRow & "))"您说您得到了 230,而 230 是工作表上最后使用的行。您还说您想要最后使用的行,所以我对问题所在感到困惑。 -
@JNevill Soryr,我说得不够清楚。我遇到的问题是,当将公式添加到条件格式中时,它会获得额外的语音标记 - 在 = 之后直接查看。感谢您更新的文本,这确实使其更易于阅读。
-
哦!我懂了。您设置的公式用双引号括起来。现在这是有道理的。我真的在那个问题上摸不着头脑。
-
看起来你已经涵盖了这两个答案。你只需要一个
=像Formula1:="=YourFormula"那样在那儿签名