ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 中文括号计算错误

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-7-15 14:48 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

中文括号计算错误

中文括号计算错误
以上红色公式错误,只因使用了中文括号,请老师帮忙重编辑一下宏,使用中文括号也正确计算,谢谢!

工程量计算表.7z

15.93 KB, 下载次数: 7

表格示例

TA的精华主题

TA的得分主题

发表于 2019-7-15 15:48 | 显示全部楼层
先将中文括号替换为英文括号
Function js(a)

x = Len(a.Value2)
S1 = Replace(Replace(a.Value2, "(", "("), ")", ")")
For i = 1 To x

s = Mid(S1, i, 1)
Z = Asc(s)
If Asc(s) >= 0 And Asc(s) < 65 Then
y = y & s
End If
Next

js = Application.Evaluate(y)
End Function

TA的精华主题

TA的得分主题

发表于 2019-7-15 15:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
字符串预先处理下,把中文括号替换成英文括号
A角改不了就改B角

TA的精华主题

TA的得分主题

发表于 2019-7-15 16:03 | 显示全部楼层
  1. Function js(a)

  2. x = Len(a.Value2)
  3. For i = 1 To x
  4. s = Mid(a, i, 1)
  5. Z = Asc(s)
  6. If (Z >= 0 And Z < 65) Or (Z = -23640 Or Z = -23639) Then
  7. y = y & s
  8. End If
  9. Next
  10. js = Application.Evaluate(y)
  11. End Function
复制代码

TA的精华主题

TA的得分主题

发表于 2019-7-15 16:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
先转半角strconv

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-15 17:39 | 显示全部楼层
我不会VB,哪位老师把编辑好的模块或excel发给我,谢谢啦。

TA的精华主题

TA的得分主题

发表于 2019-7-15 19:47 来自手机 | 显示全部楼层
不用替换中文括号,直接提取括号(管它是英文还是中文括号)内字符 执行计算后再与后面的再进行计算,OK

TA的精华主题

TA的得分主题

发表于 2019-7-15 21:20 | 显示全部楼层
本帖最后由 duquancai 于 2019-7-17 13:03 编辑
tsshixin 发表于 2019-7-15 17:39
我不会VB,哪位老师把编辑好的模块或excel发给我,谢谢啦。

写了一个函数及调用实例。怎么循环调用,你懂的!
  1. Sub main()
  2.     Dim s$
  3.     s = "长(13+15+6)*3高*2面"
  4.     MsgBox get_str(s)
  5. End Sub
  6. Function get_str(ByVal s As String) As String
  7.     Dim D As Object, js As Object
  8.     Set D = CreateObject("htmlfile"): Set js = D.parentWindow
  9.     js.execScript "var re=/./.compile(/[((](\d+\+\d+\+\d+)[))][^*]*(\*\d+)[^*]*(\*\d+)/);"
  10.     js.execScript "var a='" & s & "'.match(re);"
  11.     get_str = js.eval("a?eval(eval(a[1])+a[2]+a[3]):('无法计算!');")
  12. End Function
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-17 18:13 | 显示全部楼层
已解决问题,谢谢各位老师!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-26 11:43 , Processed in 0.039065 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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