EXCEL和普通计算器
作者:管理员 来源:新浪爱问 日期:2008-04-21
什么?我居然把EXCEL和计算器相比?一点都没错!
大家都知道,EXCEL是非常强大的,只需要在单元格内输入一个“=”号,后面的内容就非常的精彩了。它不仅仅可以完成普通计算器的功能,而且EXCEL简直就是一个小型的数据库了!
但是,我今天就要给EXCEL泼冷水,我要把EXCEL和中学生使用的10元一个的计算器相比较。
---------------------
事情是这样的,我在建筑企业上班,需要计算一个石头砌成的墙壁的体积。我们假设这个墙壁是一个立方体,那么立方体的计算公式是“长*宽*高”,这个我们在初中就学习过了。
假设,我这里有一个立方体,长1米,宽2米,高3米,那么它的体积就是1*2*3=6立方米。然后,我会在工程量统计表里,写上“6立方米”这个结果,打印出来交给领导看。
领导看了非常不高兴,领导说,应该把计算式给写上。领导说得有道理,工程中确实应该写上计算式,于是我就写了“1米*2米*3米=6立方米”。
领导看了,还是不高兴,领导说:“1米、2米、3米,谁是长?谁是宽?谁是高?”应该尽量的写清楚,以便以后查看。领导还是正确的,于是我写了计算式“长1米*宽2米*高3米”,再在旁边的计算结果中写了6,再在单位中填写了“立方米”。如工作表1所示。
但事实上,我有大量的这样的计算式需要计算,而且这些计算式并不是“长宽高”这么简单,我都需要计算出结果来。如工作表2所示。
现在,大家请看工作表3。
在A列中,都是些带有汉字注释的计算式。领导说了,必须带有汉字,若干年后才能明白是如何计算的。
在C列中,我需要得到计算结果。
我想,要得到计算的结果,首先要把汉字给去掉,因为汉字是无法进行计算的。于是,就有了过渡列——B列。
在B列中,我列出了一个没有汉字的计算式,我是手动删除的。我希望能够实现自动删除或更改。
现在工作流程出来了。
A列为原始计算式。
通过自动删除双字节字符,如汉字、符号,来到B列。
B列为可以进行计算的计算值。
使用EXCEL对B列进行计算(表达式计算),最后得到C列的答案。
请问,如何实现A列到B列。再实现B列到C列。
以往,我都是通过中学生手里的计算器实现的。现在,我希望通过EXCEL实现,怎么弄呢?
这个问题太复杂,送上50分吧!谢谢各位!
附件:Book1.xls
电脑问题网给出的最佳答案
我在表2,表3各做了一个按钮,根据您的需要可以产生2 种格式的结果,不过我个人还是倾向于表2,直接产生结果
请启用宏
另外, 若不用宏,这个问题感觉还可以从条件格式的角度考虑解决。
附件:Book1.xls
其他回答
这个问题其实不像想像中的复杂,用Excel可以轻松搞定,都用不了多少行代码,操作步骤如下:
1、自定义一个函数“biaoda()”用来生成计算表达式:
Option Explicit
Function biaoda(strTemp)
Dim objRegExp
Set objRegExp = CreateObject("vbscript.regexp")
With objRegExp
.Pattern = "[\u4e00-\u9fa5]"
.IgnoreCase = True
.Global = True
biaoda = .Replace(strTemp, "")
End With
Set objRegExp = Nothing
End Function
2、使用宏表函数来计算生成的表达式:
插入名称“result1”
引用中输入“=EVALUATE(Sheet3!B2)”
大功告成。
Sheet2中将名称整合一下,定义名称“result”
引用内容变成“=EVALUATE(biaoda(Sheet2!A2))”
具体效果如附件所示:
附件:正则应用.xls