用let简化公式:分隔符连接的水果名称,只筛选带"瓜"字的水果
大家好,今天我们来复习一个老案例,看看怎么将比较冗长的公式尽量缩短一些。想必大家都有一定的思路。
如下图所示:
A列每个单元格中都包含用分隔符逗号连接的若干个水果名称,我们想要进行一次筛选提取,将单元格字符串中包含带“瓜”字的水果单独提取出来,放置到B列对应的位置。

小编给到的解决方案是:
TEXTJOIN+LET+TEXTSPLIT+FILTER+REGEXP
TEXTSPLIT→FILTER→TEXTJOIN这一部分思路非常顺畅,逻辑清晰,符合"拆分-过滤-合并"的直观思维。
REGEXP是专门的正则表达式函数,比FIND或SEARCH更强大,可以比较容易的进行提取、判断、替换。
使用LET函数将拆分结果命名为变量a,避免重复使用TEXTSPLIT进行计算,提升了统计效率。
虽然其中会涉及到5个函数,但是由于LET函数的加持,使公式的整体长度不会很长,且可读性更佳。
下面我们来整体看一下工作原理!
第一步
名称拆分
借助TEXTSPLIT函数强大的拆分性能:
=TEXTSPLIT(A2,,",")
可以将A列单元格中以逗号间隔开的水果名称拆分到一列多行显示。

第二步
判断名称
借助REGEXP函数强大的判断模式:
=REGEXP(TEXTSPLIT(A2,,","),"瓜",1)
判断上一步拆分出来的一列多行(数组)的各个元素水果名称中是否包含关键字“瓜”。如果包含这个字,那么就会返回判断结果TRUE(真值),相反如果不包含这个字,就会返回判断结果FALSE(假值)。

第三步
筛选名称
我们利用FILTER的强大的条件筛选功能:
=FILTER(TEXTSPLIT(A2,,","),REGEXP(TEXTSPLIT(A2,,","),"瓜",1))
在TEXTSPLIT(A2,,",")(第1参数)这个分行后的一列多行的水果名称数组区域中进行整体筛选。且只有当这个一列多行的水果名称数组区域中含有关键字“瓜”的时候(第2参数),我们才会将包含“瓜”字的所有水果名称筛选出来显示。

第四步
带入变量简化公式
因为在上一步公式中:
FILTER(TEXTSPLIT(A2,,","),REGEXP(TEXTSPLIT(A2,,","),"瓜",1))
TEXTSPLIT(A2,,",")这一部分出现被引用了2次,为了使其不重复出现,减少公式长度,可以令这一步部分用变量参数a表示。
可以用LET函数设置变量参数:
=LET(a,TEXTSPLIT(A2,,","),FILTER(a,REGEXP(a,"瓜",1)))
第1参数与第2参数表示令变量参数a代替TEXTSPLIT(A2,,","),那么后续两次重复引用的TEXTSPLIT(A2,,",")就都可以用a代替了。

第五步
合并名称
优先使用TEXTJOIN强大的分隔符合并功能:
=TEXTJOIN(",",,LET(a,TEXTSPLIT(A2,,","),FILTER(a,REGEXP(a,"瓜",1))))
将返回的一列多行的带“瓜”字的水果名称组成的数组溢出区域,用TEXTJOIN函数设置分隔符逗号后进行合并,最终结果显示在单个单元格中。
这样整体公式既缩短了长度,又增加了可读性。

声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
