欢迎转发和点一下“看”,文末留言互动!

置顶公众号或设为星标及时接收更新不迷路

朋友们好,这里是EXCEL应用之家,坚持分享ECXEL操作技巧。

今天要和大家分享一组高版本函数的文本题目。题目是这样的:

题目要求根据上方的表格,根据姓名来查找所属区域。这道题目,用低版本函数INDEX函数嵌套IF函数就可以完成。今天我们将着重分享一组高版本的函数技巧。

01

CONCAT函数

在单元格B11中输入下列公式,并向下填充即可。

=CONCAT(REPT(A$1:E$1,COUNTIF(A11,A$2:E$8)))

一句话解释:

由于名称是唯一的,COUNTIF函数返回一个包含一组0和一个1的7行5列的内存数组。接下来REPT函数返回1对应的区域名称,其余的返回空值。最后由CONCAT函数完成文本合并。

02

TOCOL函数

在单元格B11中输入下列公式,并向下填充即可。

=TOCOL(IF(A$2:E$8=A11,A$1:E$1,A),2)

一句话解释:

IF函数部分第三参数是不符合EXCEL公式中对于文本输入要求的,会返回错误值。但这里就是要返回错误值。TOCOL函数以一列形式返回数组,参数2代表忽略错误值。

03

XLOOKUP函数

在单元格B11中输入下列公式,并向下填充即可。

=XLOOKUP(1=1,BYCOL(A$2:E$8=A11,OR),A$1:E$1)

这条公式比较有意思。

BYCOL(A$2:E$8=A11,OR)

BYCOL函数官方的解释是,将LAMBDA函数应用于每个列并返回结果的数组。什么意思呢?字面上不好理解,BYCOL函数通常要和LAMBDA函数配套使用,在这里可以这样理解:

它的第一参数必须是一个数组。A$2:E$8=A11返回一个7行5列的数组。

它的第二参数是作用在数组中每一列的函数计算。例如,这里第二参数是OR,表明对每一列都进行OR函数运算。

BYCOL函数的第二参数类似SUBTOTAL函数或者AGGREGATE函数,有多个函数可供选择。

整体上BYCOL函数返回一个1行5列的数组,{FALSE,TRUE,FALSE,FALSE,FALSE}。

XLOOKUP(1=1,BYCOL(A$2:E$8=A11,OR),A$1:E$1)

接下来就简单了,利用XLOOKUP函数查找并返回TRUE对应的区域就可以了。

和BYCOL函数相同的,还有BYROW函数,用法是类似的。

04

XLOOKUP函数正则表达式匹配

在单元格B11中输入下列公式,并向下填充即可。

=XLOOKUP(A11:A12,BYCOL(A2:E8,CONCAT),A1:E1,,3)

解释一下这条公式。

BYCOL(A2:E8,CONCAT)

这个和上面那条公式中的BYCOL函数类似。只不过这里第二参数使用的是CONCAT,意思是给数组中的每一列都执行文本合并操作。

不装了,学会更加简洁高效的新版本函数,再也不愿事事都万金油了!
XLOOKUP(A11:A12,BYCOL(A2:E8,CONCAT),A1:E1,,3)

XLOOKUP函数第一参数查找值,第二参数查找区域,第三参数返回区域,第四参数找不到时的替代输入值,第五参数匹配模式,3代表正则表达式匹配。

正则表达式匹配顾名思义,可以在查找值中编写正则表达式来匹配和查找数值。由于查找区域是合并后的文本字符串,查找值中的姓名就是一种简单的正则表达式。

05

FILTER函数

在单元格B11中输入下列公式,并向下填充即可。

=FILTER($1:.$1,BYCOL(A11=A$1:E$8,OR))

这条公式中也有一个技巧。BYCOL函数不必再解释了,它返回的结果是{FALSE,TRUE,FALSE,FALSE,FALSE}。说说FILTER函数。

$1:.$1

这是对第1行的引用。通常情况下,这种引用会有多个空白单元格。而$1:.$1这种写法裁剪掉了引用区域内多余的空格,只返回有实际数据的引用。因此,这部分返回的结果是{“华北”,”华东”,”华南”,”华中”,”西南”},

FILTER($1:.$1,BYCOL(A11=A$1:E$8,OR))

最终,FILTER函数返回“TRUE”对应的区域“华东”。

我就知道你“在看”

推荐阅读