夜雨聆风学习资料网

ARTICLE · 1084620

看 Excel 函数公式像看天书?懒人拆解法,新手也能一眼看懂

看 Excel 函数公式像看天书?懒人拆解法,新手也能一眼看懂
接上篇我会的 Excel 函数不到 100 个,遇到复杂嵌套公式,照样能快速拆解,这篇文章接着分析下面这两个函数公式。
=IFERROR(SUM(--TEXTSPLIT(A1, TEXTSPLIT(A1, SEQUENCE(10,,0,1),,1), ,1)), "")

=IFERROR(SUM(--REGEXP(A1,"-?\d+\.?\d*")),"")

在分析之前,我们先来看看上篇文章的函数公式的局限
=+IFERROR(@EVALUATE(SUBSTITUTE(SUBSTITUTE(A1,"{","*ISTEXT(""{"),"}","}"")")),"")
看到了吧,当要计算的内容不符合###+###{***}这种格式的时候,就会计算不了,所以,才有了上面两个函数公式,优化成不管它变成什么格式,都可以进行计算。
搞懂了为什么要优化,现在就来分析为什么函数公式要这么写吧。
=IFERROR(SUM(--TEXTSPLIT(A1, TEXTSPLIT(A1, SEQUENCE(10,,0,1),,1), ,1)), "")
我们先来分析这一个函数公式,还是遵循从里到外,从后到前的分析方法。
先看这一部分SEQUENCE(10,,0,1)
可以看到,这部分公式可以构造一个数组{0;1;2;3;4;5;6;7;8;9},为什么要构造这个数组,作用是什么呢?现在还不知道,那我们就朝前分析。
我们选中TEXTSPLIT(A1,SEQUENCE(10,,0,1),,1)这一部分,然后按F9键,可以得到下面这样的内容,这就是这一段公式的输出结果
{"+","{高}+","a"}
这是什么意思呢?那我们先用一个简单的例子来学习一下TEXTSPLIT函数

=TEXTSPLIT(A1,"/")

上图中 语文/数学/外语 通过/隔开,然后要把它们拆成3列,就要用TEXTSPLIT函数以 / 符号给它拆开。

那么同样的

100+100{高}+100a

变成

+、{高}+、a

是按什么拆分的呢?是不是3个100拆分的,没错,拆分一个字符串,不仅可以用符号,还可以用数字,那怎么确定是哪个数字呢?不用考虑那么多,直接把0-9都加进去就行,所以才会用SEQUENCE(10,,0,1),当然你直接在相同的位置输入{0;1;2;3;4;5;6;7;8;9}也是可以的,效果完全一样。

所以

TEXTSPLIT(A1,SEQUENCE(10,,0,1),,1)
里面的
SEQUENCE(10,,0,1)或者{0;1;2;3;4;5;6;7;8;9}

就是作为拆分符号使用的。

那么为什么要把100+100{高}+100a里面的+、{高}+、a都提取出来呢,,你发现没有,如果用

+、{高}+、a

作为分割符号,不就可以把

100+100{高}+100a

里的数字提取出来了吗,所以要将TEXTSPLIT(A1,SEQUENCE(10,,0,1),,1)的结果+、{高}+、a作为下一个TEXTSPLIT函数拆分里的拆分参数。

选中

TEXTSPLIT(A1,TEXTSPLIT(A1,{0;1;2;3;4;5;6;7;8;9},,1),,1)

然后按F9键,得到下面的结果

{"100","100","100"}

你看,通过将+、{高}+、a作为拆分符号,就可以提取出来数字,但是现在数字是加了双引号的,还是文本,不能进行运算。所以要在前面加两个负号--,加负号--的意思就是负负得正,相当于乘以1,就可以将文本转成数字,这是文本转数字的常规用法,请同学们拿出小本子记一下。

最后再用SUM函数进行求和运算,这个就没有什么好讲的了。

另外再布置一个作业,思考一下这篇文章解析的这个公式有什么缺陷?评论区告诉我。

好了,今天的内容就分析到这里,另一个公式下一篇文章再进行解析,下一篇就浅谈一下正则表达式,下课。

你身边有没有还在手动从混排文本里抠数字求和的同事?转发给他,帮他少做半小时重复操作。

你平时遇到的文本数字都是什么格式?或者下一篇想看 REGEXP 正则公式拆解吗?评论区留言,下期直接安排。

关注我,get 更多不用死记硬背的 Excel 懒人技巧。

相关学习资料