提取案例
案例一
案例一说明:
原始数据从系统导出,其中的B列是文本数字,无法直接求和;
要求根据这种数据源统计总销售额。
基于这种数据源,使用SUM直接求和结果为0,如下图所示。
导致结果为0的原因是SUM函数计算时忽略文本。
在公式编辑状态,选中引用区域B2:B6按F9查看内存计算结果,可见{"10";"20";"30";"40";"50"}全部是文本数字,如下图所示。
动图演示过程如下。
这种情况下,如果每次你都要先把文本转换为数值,再使用公式计算,这就意味着每次导出数据,都要重复进行格式转换的过程。
最好的办法是,基于这种数据源,直接写公式进行计算,动图演示如下。
这里用到的是个很精简的数组公式,按Ctrl+Shift+Enter输入
=SUM(--B2:B6)
这个公式的灵魂在于借助减负运算将文本转为数值再传递给SUM计算。
如下动图演示,选中--B2:B6按F9可见转为{10;20;30;40;50}再用SUM求和,得到了正确结果。
所以这个公式虽然非常精简,但却具有“灵魂”,能有效解决问题,这样的公式就是很好的公式。
数组方面的知识精讲,请从公众号“LiRuiExcel”底部菜单点击“知识店铺”进九期特训营的函数中级班系统学习。
这种有灵魂的精简公式还有很多,我们继续。
案例二
案例二说明:
姓名和手机号码混放在一个单元格中,
姓名长度不固定(从2字至6字不等);
要求从混杂列中提取出姓名。
案例场景,如下图所示。
由于姓名的长度并不固定,所以截取多少位字符是关键问题;
有灵魂的公式可以有效解决关键问题。
公式如下:
=LEFT(A2,LENB(A2)-LEN(A2))
借助LENB函数和LEN函数,分别按照字节和字符数统计长度,一个文本的字节数是2,字符数是1,借助这个规律得到姓名长度。
这种借助函数功能特性,有效解决核心问题的所在,就是公式的灵魂。
这种经典案例,下面还有,我们继续。
案例三
案例三说明:
文本和数值混杂在1个单元格中,
数值所在的位置和长度均不固定;
要求从中提取数值。
这次的问题难度升级了,要提取的数值,不但位置不固定,而且数值长度也不固定。
案例场景,如下图所示。
但是只要你能给公式赋予灵魂,有效解决关键问题,就能轻松破解。
公式如下:
=-LOOKUP(,-MIDB(A2,SEARCHB("?",A2),ROW($1:$10)-1))
解决效果,如下图所示。
公式中用到的函数都很常见,关键在于MIDB和SEARCHB按字节定位数据位置以及SEARCHB函数支持通配符查找的特性。
我们看到,只要你善于借助函数特性和组合,就能给普通的公式注入灵魂。
这几个经典案例中的公式,方便大家在工作中直接套用。