兰色收到一个同学提问:
如下图所示要求把左侧考核表中的正数和负数分别提取出来求和。如
1+3+9+6= 19
-3-6-4-5=-
18
这个问题看上去也不太难,好象可以用分列或一般的截取函数就可以搞定,但....如果你仔细看就会发现,其中难题不好办:一个格式有多行内容,如上图左侧的蓝色单元格中,需要提取出3个数字。
兰色拿出看家本领,用textsplit +text函数写了2个看上去很绝妙的公式
正值和:
=SUM(--TEXT(TEXTSPLIT(CONCAT(C3:C6),,{"(","分"}),"0;!0;;!0"))
负值和
=SUM(--TEXT(TEXTSPLIT(CONCAT(C3:C6),,{"(","分"}),"!0;-0;;!0"))
用textsplit拆分,再用text分别提取出正值和负值,这简直是一个天才的思路。
当兰色正自我淘醉时,一个新函数的出现让兰色自豪受到暴击。它就是正则函数,在WPS它是
Regexp
,而在excel中则分身为3兄弟(
提取、替换和判断
)
一起看看用正则函数有多简单
一、在 WPS表格 中公式
正值求和
=SUM(--REGEXP(CONCAT(B2:B5)," \+ \d+"))
负值求和
=SUM(-- REGEXP (CONCAT(B2:B5)," \- \d+ "))
注: \+ ,因为+是特殊符号前面需要添加\转换普通字符, \d+ 是任意长度整数
二、在Excel表格中公式
=SUM(-- REGEXEXTRACT (CONCAT(C3:C6),"\+\d+", 1 ))
和WPS的区分别,需要用
REGEXEXTRACT函数,
最后的参数
1
表示提取所有符合条件的,省略时只提取第1个。
兰色说 : 学过编程的同学都知道,正则表达式功能超级强大,同时规则也多的吓人,所以本文的示例只能算入门中的入门层级,想完全学会,需要几个月功夫。另,这个函数目前只能在office365预览版和WPS内测版( 买过四合一大全套的同学去群里下载WPS内测版的安装程序 )中可用。
兰色根据多年经验,录制了一全套适合新手和初中级阶段用户学习的Excel教程。包括 Excel表格92个函数用法 、 119个使用技巧 、 透视表从入门到精通50集 、 图表从入门到精通185集 。详情点击下方链接