为什么excel正在评估像4>这样的东西,我一直在撞墙。 0是假的......
在vba中,我正在应用以下R1C1论坛:
=IF(AND(RC[-5]>R1C15,RC[-4]>2*R1C15,RC[-3]>3*R1C15),""CORE"",""-"")
当宏运行时,转为:
=IF(AND(I2>$O$1,J2>2*$O$1,K2>3*$O$1),"CORE","-")
但是,如果我们看一下第2行的截图 I2,J2,K2都设置为值4,大于O1值0,但excel将其评估为false。
documentation of Jboss modules with regards to class loading
为什么呢?这两个字段都被格式化为数字?
完整的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
答案 0 :(得分:2)
您可以尝试使用更干净的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制作并删除的其他解决方案和评论:表达式J2>(2*$O$1)
相当于J2>2*$O$1
,因为乘法优先,然后是逻辑运算,因此括号(由该成员建议)只是可选的;没有它们,解决方案就可以工作。