四时宝库

程序员的知识宝库

解决复杂文本数字混合计算问题,这3个函数一出手就是王炸!

EVALUATE、SUBSTITUTES这两个函数也许相对陌生一点,但在特定情况下,作用也不小。此外,还有一个强大的解决复杂文本数字问题的函数。
一、EVALUATE

EVALUATE是一个将文字表示的公式计算求值返回结果的函数。

举例来说:如图所示,A列为文本公式,要计算出奖金金额。

B2公式=EVALUATE(A2:A7)解析:EVALUATE对A2:A7范围内的文本公式进行计算求值。

二、SUBSTITUTES

SUBSTITUTES是将字符串中包含的多个子字符串替换为新字符串的函数。

举例来说:如图所示,用“*”屏蔽数字0、3、4、7。

B2公式=SUBSTITUTES(A2:A7,D2:D5,"*")解析:A2:A7为需要进行替换的字符串数据区域,D2:D5为替换前的字符串,第三个参数表示替换后的字符串。
如果第三个参数省略不写,则表示直接删除想要替换的字符串。B2公式=SUBSTITUTES(A2:A7,D2:D5)

三、应用案例

如下图所示,某公司奖金计算为以文本形式记录的公式,现在需要计算出奖金金额。

D2公式
=EVALUATE(SUBSTITUTES(C2,$A$1:$B$1,A2:B2))解析:第一步,SUBSTITUTES(C2,$A$1:$B$1,A2:B2)将C2单元格的公式中的“业绩”、“考核”文字,批量替换为A2、B2单元格的数值。
这样,C2单元格就变成了:5754+4525*0.8+700。第二步,EVALUATE对第一步计算的结果“5754+4525*0.8+700”进行计算,得到奖金为10074。
四、提取数字计算上面案例中的公式都比较规律,容易进行替换计算,下面来看一个文字数字混合的案例。
如下图所示,要对金额求和。

在这种情况下,首先需要将A列中的数字提取出来,REGEXP函数可以轻松解决这个问题。REGEXP是基于正则表达式,进行复杂文本的匹配、提取、替换的函数。用法:(原字符串,正则表达式,如何匹配,替换为什么)
B2公式=--REGEXP(A2,"[0-9.]+")解析:REGEXP提取A2单元格内的数字,结果为文本形式。运用负负得正原理,用--计算得到数值。
D2公式=SUM(--REGEXP(A2,"[0-9.]+"))解析:SUM对提取到的数字进行求和。

小结:实际工作中遇到的问题千变万化,运用好EXCEL函数公式,往往能够达到事半功倍的效果。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接