excel运算数字文字求和,例如A1单元格中室外13+室内25+走道2*5-池边8/4,需要结果B1显示46

VBA,函数公式都可以请教高手,不懂得不要乱回答 ,数据量要求在百万级 越大越好,方法越简单的可以加分
文字和数字计算式没有规律,包含四则运算

给你个自定义函数吧

Function 计算(区域 As Range)
Dim Rng As String, i As Integer, Str As String
For i = 1 To Len(区域(1))
If Val(Mid(区域(1), i, 1)) > 0 Or Mid(区域(1), i, 1) = "0" Or Mid(区域(1), i, 1) = "+" Or Mid(区域(1), i, 1) = "-" Or Mid(区域(1), i, 1) = "*" Or Mid(区域(1), i, 1) = "/" Or Mid(区域(1), i, 1) = "^" Or Mid(区域(1), i, 1) = "." Or Mid(区域(1), i, 1) = "(" Or Mid(区域(1), i, 1) = ")" Then
Str = Str & Mid(区域(1), i, 1)
End If
计算 = Application.Evaluate("(" & Str & ")")
Next i
End Function追问

请问下数量级最多计算到什么位数

追答

我文化水平很低,你说了“数量级”,我不懂这个概念。
也许测试一下,是最好的解答。

追问

能否加QQ 出现错误

追答

提供给你的是自定义函数,不是处理事件模块,
你没有仔细看我的代码。
如果需要,你可以定义变量,再结合cells来处理

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-07
假设数据在A列,把数据区域选中,执行宏
Sub fasd()
Application.Calculation = xlCalculationManual
Dim a As Range, C$
For Each a In Selection
For i = 1 To Len(a.Value)
If Asc(Mid(a.Value, i, 1)) > 1 Then
C = C & Mid(a.Value, i, 1)
End If
Next
a.Offset(0, 1) = Application.Evaluate(C)
Next
Application.Calculation = xlCalculationAutomatic
End Sub
第2个回答  2011-11-07
先不要搞VBA,先学普通运算。很简单,就是“=”后面加数学算式。有的数据可以用单元格代替。在B1做公式 =13+25+2*5-8/4。就可以了,计算规则按四则运算的规则。追问

加文字就是方便阅览的明白这个数据是出于哪里,结果自动汇总 几千条计算式不累死人啊

追答

算式中不能有文字。做表时,在第一行项目栏内A列是室外,B列是室内等等。公式=A2+B2.......就可以了。有几千行数据并不难。在有数据的情况下,做好第一个公式,光标移到公式格的右下角,双击“小黑点”,就会自动生成几千行公式,并显示计算结果。

追问

我这样做就是要化繁精简,一个计算式出之哪里如何计算 旁边汇总结果,你说的这种表格用逻辑函数更实用些。

第3个回答  2011-11-07
如果楼主一定要这么麻烦的记录,方法倒是有,前期操作有点麻烦,之后就好了。思路是将A列上的内容去除中文,只留下数字和运算符,再通过公式计算最后的结果,也试验通过了。如果不觉得麻烦可提供个邮箱地址,直接发个文件给你就是了。追问

VBA,和函数都可以 [email protected]

第4个回答  2011-11-07
有没有括号啊之类的,或者平方?还是只有加减乘除?大致思路可以这么做,
取得A1单元格值,替换其中所有非数字和+-*/字符为空,然后然后用一个=&替换后的字符串,填入B1。.
EXCEL语法不是很熟悉,需要查询资料编写这个vba
参考下面资料
Sub CharNum()
Dim str As String,i As Long, i As Long,rng As Range,
rows(1).select
For Each rng In Selection
string rsB=rng.Value
For i = 1 To Len(rng)
str = Mid(rng.Value, i, 1)
If str Like "[0-9]" = True Then
else if str like "[+-*/]"=true then
else
rsB = Replace(rsB, str, "")
End If
Next
rsB="="&rsB
cells(rng.row,rng.column+1)=rsB
Next
这个可以试试。可能有问题,没试验结果。
第5个回答  2011-11-07
你每一个单元格的文字部分有规律吗?就是是否是固定的字数?追问

文字无规律,无固定字数

追答

最多几个文字?最少几个文字?数字后边不会再有文字了吧?