|
本帖最后由 wangjguo44 于 2015-6-1 21:15 编辑
这是个很有意思的思路:
1、首先,要把计算表达式的值算出来,一般都通过宏表函数EVALUATE()来处理,而宏表函数要通过名称定义来实现;
2、但是,本题中计算式含有不同文本字符串,要把文本从中删除,是个很头痛的事,尤其是不同的文本!
3、然而,公式的编写者发现,所有的文本都是用 [ ] 括起来;
4、于是,他走了一条捷径,不去删除文本,而把[ ]连同里边的汉字,替换成一个判断并添加乘号:如[隔间]替换成*ISTEXT("[隔间]"),这样一来,原算式中的文本变成逻辑判断,结果为true,添个乘号,即变成乘1,“白乘”,还是原值,而文本没有了!
5、替换,用两次substitute:SUBSTITUTE(SUBSTITUTE($F4,"[","*ISTEXT(""["),"]","]"")"),内层SUBSTITUTE($F4,"[","*ISTEXT(""[")——把左方括弧替换成"*ISTEXT("[",外层则把右方括弧替换成"])",得到*ISTEXT("[隔间]")这样一个乘项。
6、注意,substitute本身是处理文本函数,如果要替换成文本,必须在文本两端用双引号括起来,但是本题要求替换后在圆括弧和方括弧之间也要有个双引号 ISTEXT("[ ,这时,必须用两个双引号SUBSTITUTE($F4,"[","*ISTEXT(""["),才不会出错(若只有一个引号,excel无法判断要替换成的字符串是到哪一个双引号为止而出错)。
|
|