怎么在电子表格里把一格里的计算数据(如2+3*4+8/2)的结果弄在另一格里反应出来?我是WPS表格

如题所述

有个函数,但很难用,要定义名称
如果你能使用宏功能,加入下面这个函数后就可以实现你要的功能了。
如A1单元格填写“2*3*4”,A2单元格写公式“=MyEvaluate(A1)”就能得到结果“24”。
Function MyEvaluate(EvaStr As String)
Dim i&, P%, Si&
For i = 1 To Len(EvaStr)
If Mid(EvaStr, i, 1) = "(" Then
P = P + 1
If P = 1 Then Si = i
End If
If Mid(EvaStr, i, 1) = ")" Then
If P = 1 Then
MyEvaluate = MyEvaluate(Mid(EvaStr, 1, Si - 1) & MyEvaluate(Mid(EvaStr, Si + 1, i - 1 - Si)) & Mid(EvaStr, i + 1))
Exit Function
End If
P = P - 1
End If
Next
For i = Len(EvaStr) To 1 Step -1
If Mid(EvaStr, i, 1) = "+" Then
MyEvaluate = MyEvaluate(Mid(EvaStr, 1, i - 1)) + MyEvaluate(Mid(EvaStr, i + 1))
Exit Function
End If
If Mid(EvaStr, i, 1) = "-" Then
MyEvaluate = MyEvaluate(Mid(EvaStr, 1, i - 1)) - MyEvaluate(Mid(EvaStr, i + 1))
Exit Function
End If
Next
For i = Len(EvaStr) To 1 Step -1
If Mid(EvaStr, i, 1) = "*" Then
MyEvaluate = MyEvaluate(Mid(EvaStr, 1, i - 1)) * MyEvaluate(Mid(EvaStr, i + 1))
Exit Function
End If
If Mid(EvaStr, i, 1) = "/" Then
MyEvaluate = MyEvaluate(Mid(EvaStr, 1, i - 1)) / MyEvaluate(Mid(EvaStr, i + 1))
Exit Function
End If
Next
MyEvaluate = Val(EvaStr)
End Function

参考资料:http://bbs.wps.cn/viewthread.php?tid=21818873&highlight=%E8%A1%A8%E8%BE%BE%E5%BC%8F

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-02-10
可以用EXCEL的宏表函数evaluate,WPS中目前还没有这个函数。由于宏需要在VBA环境行进行运行。目前在WPS中VBA版本为非免费版本,在个人版中暂时未提供此环境.

在EXCEL2003版中需定义名称才能使用。
假如A1为2+3*4+8/2:
1、将光标放在B1单元格,选择“插入”-“名称”-“自定义”,
2、指定“名称”,如a,
3、在“引用位置”输入公式:=EVALUATE(Sheet1!A1)
4、点击“添加”-“确定”。
5、在A2单元格输入:=a
当A1单元格是2+3*4+8/2时,B1会自动计算出结果18。
将B1下拉复制公式,即:当A列为算式时,B列就显示值。
第2个回答  2011-02-10
需用到宏表函数,WPS表格暂时无法解决。
相似回答