excel中evaluate函数求文本型公式的计算结果.doc
文本预览下载声明
如何实现evaluate函数用来求相邻单元格文本型数学表达式的计算结果。
定义内存数组
鼠标放在G4单元格,同时按下Ctrl+F3(或者“插入-名称-定义”);
在名称栏输入任意一个名称,这里输o;
在引用位置栏输入=evaluate(substitute(substitute(1#仓库计算式表格 !f4,[,*istext([),],])))
(
①substitute(text,old_text,new_text,instance_num) 在文本字符串中用 new_text 替代 old_text。如果需要在某一文本字符串中替换指定的文本,请使用函数 SUBSTITUTE;如果需要在某一文本字符串中替换指定位置处的任意文本,请使用函数 REPLACE。
Text为需要替换其中字符的文本,或对含有文本的单元格的引用;Old_text为需要替换的旧文本;New_text用于替换 old_text 的文本;Instance_num为一数值,用来指定以 new_text 替换第几次出现的 old_text。如果指定了 instance_num,则只有满足要求的 old_text 被替换;否则将用 new_text 替换 Text 中出现的所有 old_text。
②istext(value)当value值为文本时,返回true(值1),否则返回false(值0)
③evaluate为宏表函数””,0,o)
或者=if(iserror(o),””,o) (iserror用来检验错误值的函数,当值为任意错误值(#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME? 或 #NULL!)时返回true)
即可求出F4单元格公式的计算结果。
类似的,也可求得其其它相邻单元格里公式表达式的值, 单元格的下方有一个小方点,按着鼠标左键往下拖动直到结束。””,0,o)的计算步骤如下:
G4=if(”165*2+180*2+27*2+(14+12)*3[直管]”=””,0,o)
G4=if(FALSE,0,o)
G4= o
G4=evaluate(substitute(substitute(1#仓库计算式表格 !F4,[,*istext([),],])))
G4= evaluate(substitute(substitute(”165*2+180*2+27*2+(14+12)*3[直管]”,[,*istext([),],])))
G4= evaluate(substitute(”165*2+180*2+27*2+(14+12)*3*istext(””[直管]”,],]))
G4= evaluate(”165*2+180*2+27*2+(14+12)*3*istext(””[直管])”)
G4= 165*2+180*2+27*2+(14+12)*3*istext(””[直管])
G4= 165*2+180*2+27*2+(14+12)*3*1
G4=822
(注意:“工具-公式审核-公式求值”可检查公式的计算过程)
Excel中,在A1单元格里写有以下内容:3*(4+5)-5^2,如何在B1单元格里求出其结果?
可用evaluate函数实现:
1、定义内存数组。选择B1单元格,然后按快捷键 Ctrl+F3,在名称里面随便写上一个名字,比如X;在引用位置里输入 =evaluate(A1),点击添加。关闭“定义名称”。
2、在B1单元格里输入 =IF(ISERROR(X),,X) ,即可求出A1单元格里公式的计算结果。这里结果为 2。
3、类似的,只要在本工作表中的任意位置输入 =IF(ISERROR(X),,X) ,就可求得其同一行左边相邻单元格里公式表达式的值。
通过对如何计算文本形式的公式? 的学习,我们知道了宏表4.0函数EVALUATE可以得出“文本公式”的计算结果。但令人苦恼的是,这个函数受公式长度限制,只能计算长度255字符以内的文本公式(见测试)。下面,告诉你们一个小技巧解决这个问题:【测试】:A1输入=REPT(1+,127)1,那么将产生字符长度为2*127+1=255个字符的1+1+1……的文本公式,此时用EVALUATE定义的名称是可以得出结果的。但将127改为128或者将1改为10达到256个字符,Evaluate得到的就是#VALUE!错误。【解决】步骤1、B1输入==A1,如有其他公式,向下复制。如果A列本身就带=号而设为文本格式,则可之用用=A1或跳过此步骤。直接复制A列贴到B列(因为A列是要留下来让别人看计算明细的)。步骤2、复制B列,选择型粘贴为“值”步骤3、选择B列,数据→分列→完成。【受限】不能随着A列公式的更改变化结果,呵呵。因而,有兴趣的可以录制一个宏来完
显示全部