在VBA中使用FormulaR1C1和COUNTIF碰到的一个很昏倒的问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 06:22:48
我在VBS中使用了下面的宏
Cells(r, 2).FormulaR1C1 = "=IF(ISERROR(COUNTIF(SecurityCenter!B:B,""Pass"")),""-"",COUNTIF(SecurityCenter!B:B,""Pass""))"
其中SecurityCenter是已经存在的一个表,存放了结果,统计其中Pass的数目
运行这段代码后,宏被正确设置了 但是显示的是"-"
双击Cell(r,2)的格子里面,显示出光标,进入可以编辑的方式, 然后点回车,这段宏就可以正确的运行 统计出数字来
请教各位大侠这是为什么啊
回一楼: 能帮忙找一下么? 不过我运行宏以后,内容会改变为"-" 说明这段代码已经运行了。 只是COUNTIF没有返回正确结果。
回二楼:为什么要把第二列换成第三列? 感觉没有道理,而且我用"=IF(ISERROR(COUNTIF(SecurityCenter!B,""Pass"")),""-"",COUNTIF(SecurityCenter!B,""Pass""))" 是不行的

把Cells(r, 2).FormulaR1C1 改为Cells(r, 2).Formula就可以了,因为你用的是R1C1引用方式,而SecurityCenter!B:B是另一种不同的单元格引用方式,所以
ISERROR(COUNTIF(SecurityCenter!B:B,""Pass"")),永远为真,结果永远为"-"

Cells(r, 2).FormulaR1C1 = "=IF(ISERROR(COUNTIF(SecurityCenter!C,""Pass"")),""-"",COUNTIF(SecurityCenter!C,""Pass""))"

************
C不是代表第三列,VBA中单元个格是用RC格式来表示的。

你可以这样试试,录制宏,然后输入你的公式。看看录制进去的公式是什么样子的。

没有更新。在表里编辑按回车EXCEL自动重算,但在程序里要加以行代码,强制重算,具体我忘了。