Excel表达式计算 带圆括号中括号描述均可计算 兼容64位Excel 支持超过255字符【VIP视频教程】VBA精彩实例006

2020年4月4日15:07:44 1 328 views
表格 定制  数据 合并 处理 分析 VBA 编程 开发 网页
表格 定制  数据 合并 处理 分析 VBA 编程 开发 网页

案例需求

(0.85+1.15+0.73+0.18*2+0.19*2+1.12+0.16+0.14+0.82+0.15+0.24*2+0.54+0.96+0.44+0.39+1.9[立管]+0.55*2[立管]+1.3*2[立管]+0.7*2[立管]+1.6[立管]+1.1*2[立管]+1.75[立管]+0)*30[倍数]

上面这种表达式计算,相信很多做工程预算的同学非常熟悉,在预算里面经常用这种表达式计算各种面积体积,最后根据单价得到总价,这么写的目的是方便检查,能清晰地看到计算过程,但是问题来了,计算结果的时候就麻烦了,Excel不能直接计算这种表达式,有的同学会找eval自定义名称的方式计算,但是面对这种复杂表达式还是无能为力,那就只有使用vba自定义函数才可以实现,且vba自带的evaluate函数有255个字符的限制,这里还需要调用js的eval函数才能计算出超长表达式,同时要用正则表达式去掉括号里的备注信息

技术要点

  • VBA计算数学表达式的值,调用jS函数中的eval函数
  • 正则表达式应用,清除中括号中的备注信息
  • 多次替换纠正手写中文括号为英文括号,保证表达式能正确计算
  • 解决64位Excel无法调用js组件的问题

VIP福利

198元至尊VIP包含 VBA175+基础408+代码助手VIP+Q群答疑

直接站内升级至尊VIP即可尊享以上所有权益


欢迎打赏观看完整视频及下载附件,感谢支持!

  • 郑广学老师微信号
  • EXCEL880B
  • weinxin
  • 我的微信公众号
  • EXCEL880
  • weinxin
表格 定制  数据 合并 处理 分析 VBA 编程 开发 网页
表格 定制  数据 合并 处理 分析 VBA 编程 开发 网页

发表评论

您必须才能发表评论!

目前评论:1   其中:访客  1   博主  0

    • little强 9

      郑老师,这个视频非常棒!不过在实际工作中,方括号的说明文字中会含有数字,视频中正则替换没考虑到说明文字中数字!例如:47.8-4.29*3[扣3个窗]+31.47+50.74-7.77[彩绘]-1.79*2[扣2个窗]-(11.23+13.51+13.1)*0.6[扣青砖墙]+9.52+27.64-0.6*(2.66+7.02)[扣青砖墙]=114.44
      说明文字中数字不是在汉字前就是在汉字后,所以我加了句
      s = regReplace(s, “[u4e00-u9fa5]d+|d+[u4e00-u9fa5]”, “”)