Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2481|回复: 3

[已解决]计算式过长出现错误

[复制链接]
发表于 2015-12-15 17:44 | 显示全部楼层 |阅读模式
VBA为:
Functionzdy(rng)
zf = rng
WithCreateObject("vbscript.regexp")
    .Pattern = "\[.*?\]"
    .Global = True
    zf = .Replace(zf, "")
    zf = Replace(zf, "=","")
    zdy = Application.Evaluate(zf)
End With
EndFunction

A1输入[周长]149*4.5-[洞口](1.82*0.62+5.3*3.3+1.02*0.62+0.52*0.32+6.6*3.6+0.4*0.62+1.52*2.02+1.3*3.9+1.5*2.1+2.4*3.3+3*3.6+7.3*3.9+2.4*2.5+6*3.3+1.52*0.92+5.6*3.6+7.5*3.3+5.7*3.6+5.7*3.3+7.5*3.6+6*3.6+2.4*3.3+1.2*3.3+6*3.3+1.22*7.2+1.2*2.1+7.2*3.3)+[雨蓬板](11.4*1.2+13.1*1.2+2.3*1.2)+[小口](17.2+20.4+9.1+5.7+11.4+10.2+15.1+7.4+18.6+12.8+14.1+12.9+12.3+14.7+13.2+11.4+9+12.6+5.4+21)*0.1,在B1输入=zdy(A1),回车后出现#VALUE!,请教,感谢
最佳答案
2015-12-15 19:07
本帖最后由 橘子红 于 2015-12-15 19:09 编辑

'evaluate 跟工作表用宏表定义的时候一样,超过255字符就 value错误.可以用vbs的eval函数代替
Function zdy(Rng)
zf = Rng
With CreateObject("vbscript.regexp")
    .Pattern = "\[.*?\]"
    .Global = True
    zf = .Replace(zf, "")
    zf = Replace(zf, "=", "")
    With CreateObject("MSScriptControl.ScriptControl")
           .Language = "vbscript"
           zdy = .Eval(zf)
    End With
End With
End Function
发表于 2015-12-15 18:12 | 显示全部楼层
也不知实际附件中,是不是分开写,"Functionzdy(rng)"

建议上传excel,对照数据好理解些。
回复

使用道具 举报

 楼主| 发表于 2015-12-15 18:44 | 显示全部楼层
爱疯 发表于 2015-12-15 18:12
也不知实际附件中,是不是分开写,"Functionzdy(rng)"

建议上传excel,对照数据好理解些。

是这样的Function zdy(rng)
回复

使用道具 举报

发表于 2015-12-15 19:07 | 显示全部楼层    本楼为最佳答案   
本帖最后由 橘子红 于 2015-12-15 19:09 编辑

'evaluate 跟工作表用宏表定义的时候一样,超过255字符就 value错误.可以用vbs的eval函数代替
Function zdy(Rng)
zf = Rng
With CreateObject("vbscript.regexp")
    .Pattern = "\[.*?\]"
    .Global = True
    zf = .Replace(zf, "")
    zf = Replace(zf, "=", "")
    With CreateObject("MSScriptControl.ScriptControl")
           .Language = "vbscript"
           zdy = .Eval(zf)
    End With
End With
End Function

评分

参与人数 1 +21 收起 理由
Hsiao + 21 不明觉厉

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-19 14:08 , Processed in 0.265919 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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