ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1835|回复: 3

[求助] vba调用复杂函数的方法?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-12-17 17:35 | 显示全部楼层 |阅读模式
本帖最后由 拼音佳佳 于 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])

TA的精华主题

TA的得分主题

发表于 2019-12-17 17:47 | 显示全部楼层
都用代码处理了,还写这种函数去计算,真是无语

TA的精华主题

TA的得分主题

发表于 2019-12-17 18:05 | 显示全部楼层
都用上VBA了,工作表函数能不用就别用了,特别是这种匹配或者计数的函数

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-12-18 08:34 | 显示全部楼层
Yalishanda30 发表于 2019-12-17 18:05
都用上VBA了,工作表函数能不用就别用了,特别是这种匹配或者计数的函数

msgbox Application.WorksheetFunction.COUNTIF(cells(5,2),"空调")
这样子就可以了.
"空调"可以是单元格[b1]
编程da法好
一起鄙视公式法
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-27 10:45 , Processed in 0.035698 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表