VBA:Excel评估不正确

为什么excel正在评估像4> 0这样的错误呢?

在vba我申请以下R1C1 forumla:

=IF(AND(RC[-5]>R1C15,RC[-4]>2*R1C15,RC[-3]>3*R1C15),""CORE"",""-"") 

当macros运行时,变成:

 =IF(AND(I2>$O$1,J2>2*$O$1,K2>3*$O$1),"CORE","-") 

但是,如果我们看第2行的截图I2,J2,K2,它们都被设置为大于O1值0的值4,但是Excel会将其评估为false。

在这里输入图像说明

为什么? 这两个字段被格式化为数字?

完整的VBA片段:

 Public Sub FormatCore() Rows("1:1").Select With ActiveWindow Range("B2").Select ActiveWindow.FreezePanes = False ActiveWindow.FreezePanes = True End With Range("N2").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=IF(AND(RC[-5]>R1C15,RC[-4]>2*R1C15,RC[-3]>3*R1C15),""CORE"",""-"")" Range("N3").Select Range("N2").Select Dim total_rows As Double total_rows = Worksheets("Report").Cells(Worksheets("Report").Rows.Count, "A").End(xlUp).Row Selection.AutoFill Destination:=Range("N2: N" & total_rows) End Sub 

你可以尝试一个更清洁的VBA代码片段:它做的权利:

 Public Sub FormatCore() Dim total_rows As Double total_rows = Worksheets("Report").Cells(Worksheets("Report").Rows.Count, "A").End(xlUp).Row Range("N2").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=IF(AND(RC[-5]>R1C15,RC[-4]>2*R1C15,RC[-3]>3*R1C15),""CORE"",""-"")" Selection.AutoFill Destination:=Range("N2: N" & total_rows) End Sub 

希望这会有所帮助。

注意关于由成员@dashnick创build并删除的其他解决scheme和注释:expression式J2>(2*$O$1)相当于J2>2*$O$1因为乘法优先,之后是逻辑运算,因此括号(正如该成员所build议的)只是可选的; 该解决scheme将在没有他们的情况