*.起因
一位卡哇伊得同事姐姐想知道这个公式得应用原理,所以就写了一篇教程
*.原理就是用名称管理器给需要计算得区域文本(计算式区域)利用宏表函数evaluate对名称区域进行计算
1. 名称管理器命名区域
在表格《试验桩中》,查看“名称管理器”,可以看到被命名成“ww”的名称,被Evaluate函数计算,evaluate得函数区域是“D:D”,也就是D列。
2.宏表函数Evaluate
参考简单教程:知乎:Excel中利用“EVALUATE函数”求计算式结果
既然是宏表函数,那么它就必须打开宏才能使用。由于安全性问题,excel和wps默认是不打开VBA宏设置的,所以需要先允许宏运行。(在本文引用章节中查看《Excel打开宏得教程》)
Evaluate函数表达式解析:
参考evaluate函数解析教程:知乎:evaluate函数计算带文字说明/单位的公式
evaluate函数:
默认是将所有变量转换成数值对象来处,这也是为什么D列中得文本能被Evaluate计算得原因,当然evaluate可以做更复杂得操作,比如:
3[长]*5[宽]*2[高]
这种,通过文本函数处理筛选后,也能将文本处理成"352"来处理计算,但是一定要将文本剔除,不然evaluate因无法转换文本对象为可计算得数值而报错。
3.创建得函数最终会在名称管理器中公式中查看与应用。
*.更好得解决方案:FORMULATEXT 函数
由于evaluate函数得安全性问题,微软官方也不建议使用过分使用,
如果使用 EVALUATE 函数来计算存储为文本的公式,则可以改用 FORMULATEXT 函数。FORMULATEXT 函数以文本形式返回公式。
以下修改表格得方法:
1. 对工程量得列 使用公式
2. 计算式列使用FORMULATEXT函数
由于使用FORMULATEXT函数会产生”=“在前面,影响美观,所以需要对文本进行修饰。
3.使用切片函数right取除第一位所有数
- right函数是从右边往左边取数
- left函数是从左边往右边取数
- mid函数是从中间取数
right函数解析:微软:Right 函数
这里我们在第二步用FORMULATEXT(E18)获取了整个公式得文本,那么,我们不要那个在头部得等于号"=",就只要”从右边往左边得数,除开第一个数得字符长度“
right函数刚好符合我们得要求。
我们用len()函数获取整个文本得字符长度,然后用len()-1得方式来获取扣一个字符后得程度
最后right函数计取从右边得开始得文字长度,right(文本,len(文本)-1)
4.最后获得你想要得展示效果
*.引用
Excel打开宏得教程
-
在“选项”中
-
找到信任中心设置
3.在宏设置中启用宏