公式中带变量的VBA条件格式

时间:2018-05-15 14:51:51

标签: excel vba excel-vba

尝试创建一个相对简单的宏来循环开始(命名)的每个工作表,并根据相关单元格的数字平均值将条件格式应用于特定列中的所有已用单元格

我一直坚持让条件格式化公式正确输入到单元格中。

示例:我想要的公式是= R2> 2(平均值(R2:R *))(其中*是最后使用的行)

但是,我在公式框中得到的是:=“R2> 2(平均值(R2:R230))”(230是该表上最后一次使用的行)

从脚本中删除语音标记会将其打破“预期:结束语句”

这里的代码,因为它可能还有其他错误:

@Injectable()
export class CustomErrorHandler extends ErrorHandler {
    constructor() {
        super();
    }

    handleError(error) {  
      switch (error.type) {
        case 'custom': doTheThing(); return super.handleError(error); //?
        default: return super.handleError(error); // ?
      }
    }
}

非常感谢!

2 个答案:

答案 0 :(得分:1)

我认为这就是你要找的东西:

Sub Bread()

    Dim ws As Worksheet
    Dim LastRow As Long

    For Each ws In ActiveWorkbook.Sheets
        If ws.Name <> "Base Details" Then
            ws.Cells.ClearFormats
            LastRow = ws.UsedRange.Rows.Count
            With ws.Range("R2:R" & LastRow)
                .FormatConditions.Add Type:=xlExpression, Formula1:="=R2>2*Average($R$2:$R$" & LastRow & ")"
                .FormatConditions(.FormatConditions.Count).Interior.Color = RGB(255, 0, 0)
                .FormatConditions.Add Type:=xlExpression, Formula1:="=R2<0.1*Average($R$2:$R$" & LastRow & ")"
                .FormatConditions(.FormatConditions.Count).Interior.Color = RGB(255, 255, 0)
            End With
        End If
    Next ws

End Sub

答案 1 :(得分:0)

我看到两个问题。首先,正如Scott Craner所说,您在2Average之间错过了一位运算符。其次,在公式的开头(在R2的第一个实例之前)需要=

Formula1:="=R2" & ">" & "2 * " & "(" & "Average" & "(" & "R2:R" & LastRow & "))"

希望有所帮助。