EVALUATE函数的作用是对以文字表示的一个公式或表达式求值,并返回结果。其语法为: EVALUATE(formula_text) formula_text 是一个要求值的以文字形式表示的表达式。 计算简单的文本算式 示例 2310计算简单的文本算式 选中C2单元格,定义名称“计算1”,公式为: =EVALUATE(!B2&T(NOW())) C2单元格输入以下公式,并向下复制到C9单元格,计算出B列的算式结果,如图 2327所示。 =计算1 图 2327 计算文本算式 EVALUATE函数的参数最多只支持2^8-1=255个字符,超出时返回错误值#VALUE!。 EVALUATE函数不仅可以计算简单的数学表达式,也可以计算含有其它函数的文本算式,如图 2328所示: 图 2328 计算含有其它函数的文本算式 计算复杂的文本算式 示例 2311计算复杂的文本算式 如图 2329所示,选中C2单元格,定义名称“计算2”,公式为: =EVALUATE(SUBSTITUTE(SUBSTITUTE(!B2,'[','+N('''),']',''')')&T(NOW())) C2单元格输入以下公式,复制到C9单元格。 =计算2 图 2329 计算复杂的文本算式 以B2单元格“8*1800[空调]+6*3500[洗衣机]”为例,主要思路为: 1、将字符串中的中文部分剔除影响,[空调]、[洗衣机]等。 2、常规的直接替换的方法均无效,于是使用N函数,因为N函数的参数如果为“文本”,则N('文本')结果为0。 3、目标:将以上字符串改为“8*1800+N('空调')+6*3500+N('洗衣机')”,这样便可以使用EVALUATE进行计算。 以下为公式中不同部分的说明: 1、SUBSTITUTE(!B2,'[','+N(''')部分,首先将字符串中的左中括号“[”替换为“+N('”,得到字符串:“8*1800+N('空调]+6*3500+N('洗衣机]”。 2、SUBSTITUTE(SUBSTITUTE(!B2,'[','+N('''),']',''')')部分,将字符串中的右中括号“]”替换为“')”,得到字符串:“8*1800+N('空调')+6*3500+N('洗衣机')” 3、&T(NOW())部分,连接易失性函数NOW,以方便有单元格发生变化时进行自动重算。 4、EVALUATE(SUBSTITUTE(SUBSTITUTE(!B2,'[','+N('''),']',''')')&T(NOW())):相当于:EVALUATE('8*1800+N('空调')+6*3500+N('洗衣机')') 注意,在函数中,如果得到的结果中需要英文状态的半角双引号,则公式中的双引号数量需要加倍,比如A10单元格输入公式:='''',四个英文状态下的半角双引号,则A10单元格返回结果为一个双引号“'”,其中最外层的两个双引号表示文本引用符号,中间的两个双引号表示数量加倍后的双引号。 |
|
来自: hercules028 > 《excel》