EXCEL中一列输入公式及备注,一列自动计算结果,用EVALUATE函数却超过255字符的限制,如何实现? 100
以下这个方法虽然解决了EVALUATE函数字符超限的问题,但是当公式中有“[备注]”时不能计算结果,请求高手帮忙FunctionAutocal1(CellWithCrea...
以下这个方法虽然解决了EVALUATE函数字符超限的问题,但是当公式中有“[备注]”时不能计算结果,请求高手帮忙
Function Autocal1(Cell
With CreateObject("MSScriptControl.ScriptControl")
.Language = "vbscript"
Autocal1 = .Eval(Cell)
End With
End Function
Function Autocal2(Cell)
With CreateObject("Access.Application")
Autocal2 = .Eval(Cell)
End With
End Function
Sub test()
Dim x As String
x =
"((2.4+3.9+2.8+1.3)+(4.7+2.8)+(6.3+0.7+9.1+5.1+3.2+0.4+4.2+0.6))*0.5+0.0+2*0.0+4*(0.0+0.0)+3*0.0+0.0+((2.4+3.9+2.8+1.3)+(4.7+2.8)+(6.3+0.7+9.1+5.1+3.2+0.4+4.2+0.6))*0.5+0.0+2*0.0+4*(0.0+0.0)+3*0.0+0.0+4*(0.0+0.0)+3*0.0+0.0+(2.4+3.9+2.8+1.3)+2+5+5*2+2+5+5*2-((2.4+3.9+2.8+1.3)+(4.7+2.8)+(6.3+0.7+9.1+5.1+3.2+0.4+4.2+0.6))*0.5+0.0+2*0.0+4*(0.0+0.0)+3*0.0+0.0+((2.4+3.9+2.8+1.3)+(4.7+2.8)+(6.3+0.7+9.1+5.1+3.2+0.4+4.2+0.6))*0.5+0.0+2*0.0+4*(0.0+0.0)+3*0.0+0.0+4*(0.0+0.0)+3*0.0+0.0+(2.4+3.9+2.8+1.3)+2+5+5*2+2+5+5*2*
((2.4+3.9+2.8+1.3)+(4.7+2.8)+(6.3+0.7+9.1+5.1+3.2+0.4+4.2+0.6))*0.5+0.0+2*0.0+4*(0.0+0.0)+3*0.0+0.0+((2.4+3.9+2.8+1.3)+(4.7+2.8)+(6.3+0.7+9.1+5.1+3.2+0.4+4.2+0.6))*0.5+0.0+2*0.0+4*(0.0+0.0)+3*0.0+0.0+4*(0.0+0.0)+3*0.0+0.0+(2.4+3.9+2.8+1.3)+2+5+5*2+2+5+5*2"
MsgBox Autocal1(x)
MsgBox Autocal2(x)
[A1] = x
MsgBox Autocal1([A1])
MsgBox Autocal2([A1])
End Sub 展开
Function Autocal1(Cell
With CreateObject("MSScriptControl.ScriptControl")
.Language = "vbscript"
Autocal1 = .Eval(Cell)
End With
End Function
Function Autocal2(Cell)
With CreateObject("Access.Application")
Autocal2 = .Eval(Cell)
End With
End Function
Sub test()
Dim x As String
x =
"((2.4+3.9+2.8+1.3)+(4.7+2.8)+(6.3+0.7+9.1+5.1+3.2+0.4+4.2+0.6))*0.5+0.0+2*0.0+4*(0.0+0.0)+3*0.0+0.0+((2.4+3.9+2.8+1.3)+(4.7+2.8)+(6.3+0.7+9.1+5.1+3.2+0.4+4.2+0.6))*0.5+0.0+2*0.0+4*(0.0+0.0)+3*0.0+0.0+4*(0.0+0.0)+3*0.0+0.0+(2.4+3.9+2.8+1.3)+2+5+5*2+2+5+5*2-((2.4+3.9+2.8+1.3)+(4.7+2.8)+(6.3+0.7+9.1+5.1+3.2+0.4+4.2+0.6))*0.5+0.0+2*0.0+4*(0.0+0.0)+3*0.0+0.0+((2.4+3.9+2.8+1.3)+(4.7+2.8)+(6.3+0.7+9.1+5.1+3.2+0.4+4.2+0.6))*0.5+0.0+2*0.0+4*(0.0+0.0)+3*0.0+0.0+4*(0.0+0.0)+3*0.0+0.0+(2.4+3.9+2.8+1.3)+2+5+5*2+2+5+5*2*
((2.4+3.9+2.8+1.3)+(4.7+2.8)+(6.3+0.7+9.1+5.1+3.2+0.4+4.2+0.6))*0.5+0.0+2*0.0+4*(0.0+0.0)+3*0.0+0.0+((2.4+3.9+2.8+1.3)+(4.7+2.8)+(6.3+0.7+9.1+5.1+3.2+0.4+4.2+0.6))*0.5+0.0+2*0.0+4*(0.0+0.0)+3*0.0+0.0+4*(0.0+0.0)+3*0.0+0.0+(2.4+3.9+2.8+1.3)+2+5+5*2+2+5+5*2"
MsgBox Autocal1(x)
MsgBox Autocal2(x)
[A1] = x
MsgBox Autocal1([A1])
MsgBox Autocal2([A1])
End Sub 展开
2个回答
推荐于2018-12-25
展开全部
不要把问题搞得太复杂来计算……
说说你的具体情况 然后大家给你一些建议……举出你数据的例子 要有代表性的 包括各种可能出现的情况 加以说明一下……
还有 你的数据 原始来源等等……
个人认为 不要把问题弄复杂了 再求最后的结果;能拆分成分步解决 再做最后处理最好 并且要从原始数据搜集开始 ……基础工作 很重要
说说你的具体情况 然后大家给你一些建议……举出你数据的例子 要有代表性的 包括各种可能出现的情况 加以说明一下……
还有 你的数据 原始来源等等……
个人认为 不要把问题弄复杂了 再求最后的结果;能拆分成分步解决 再做最后处理最好 并且要从原始数据搜集开始 ……基础工作 很重要
更多追问追答
追答
看来你没有理解我说的意思
我是想知道 你为什么要这样做 你这样做的目的是什么 仅仅是练习计算 怎样做都没有问题 因为是练习嘛,但是如果是要解决实际问题 我不觉得这样做是 一个好的解决方案
说说你的具体情况 或许有更好的解决方案 如果不是实际需要 那么 我就爱莫能助了……对这样的计算 在实践中 没有多大实用价值……
你目前的数据中不带备注文本 你说 没有问题 那么 你可以把备注文本删掉嘛……
使用替换 把不需要的文本替换掉 查找 [*] 替换什么也不填写……
或者 使用数据分列 分别用 [、] 来分列……然后 再计算 ……
这样化整为零 也是解决问题的一个办法哦
展开全部
可以参照我主页中这篇文章,其附件EXCEL文件中第39行公式就是去除备注后再运算的方法
函数多了个语言选项,可利用JScript正则表达式处理问题,甚至可以在公式中编程。
具体参见下面文章的附件(示例EXCEL表格)。
http://hi.baidu.com/ygjnfsgasybbguq/item/08a3f21e2cac28e89c778a9e
函数多了个语言选项,可利用JScript正则表达式处理问题,甚至可以在公式中编程。
具体参见下面文章的附件(示例EXCEL表格)。
http://hi.baidu.com/ygjnfsgasybbguq/item/08a3f21e2cac28e89c778a9e
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询