|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 拼音佳佳 于 2019-12-18 09:26 编辑
简单的:[o1] = Application.WorksheetFunction.sum("a1:a20")
这种就跟标准的公式写法不一样了.
[o1] = Application.WorksheetFunction.CountIf("OFFSET(基本数!B1,N1-1,0),B1")
这样写,语法上不报错,可是执行就会报错.
想要执行的公式为CountIf(OFFSET(基本数!B1,N1-1,0),B1)
原因:vba会借用这个公式的值进行判断,开启自动重算,就变的很慢,于是我写了别的代码来对一些函数做了刷新操作,自动重算还是开着,速度可以接受.但是想想以后还有大量的公式需要写入,不合适.
所以现在的想法:代码关闭自动重算,然后用程序来计算这个函数的值.
所以大方向有几条:
1.能否关闭部分区域的自动重算?
2.写入公式,下拉,再复制粘贴成数值.目前采取的办法,感觉走不通.
3.把想要的公式写到vba代码里,并且关闭自动重算的时候也能运算,目前求助的内容.
说白了,代码执行的过程中,我只希望指定的单元格自动重算o1,p1这两个单元格可以自动重算?
msgbox Application.WorksheetFunction.COUNTIF(cells(5,2),"空调")
既然是vba,那么cells里面的值就可以使用循环了,问题解决.
如果是包含关系,也可以用这个instr函数
[o1] = InStr(Sheets("基本数").Cells(xa, 5), Sheets("数据录入").[e1])
|
|