使用Excel中的Unique及Filter等函数实现复杂的多条件筛选

鉴水鱼技能说 2024-10-10 18:11:00

有网友问:如下图示,如何将表一做成表二的样子就是同一个客户,不同类型的地址结合放在一个地址栏。

如果使用的是Excel365或WPS OFFICE,那么可以使用其中的UNIQUE函数,结合FILTER函数与TEXTJOIN函数可以很方便地解决此问题。假设有如下图所示的Excel工作表:

>>>第一步:在F1单元格中输入公式:【=UNIQUE(B1:C9,FALSE,FALSE)】,得到如下图所示的结果:

Unique函数返回了B1:C9单元格区域中不重复的项。

UNIQUE函数是一个动态数组函数,它可以返回列表或范围中的唯一值。这意味着它会从指定的范围内筛选出不重复的值,并以一个新的数组形式返回这些值。下面是UNIQUE函数的基本使用方法: 函数语法 UNIQUE(array, [by_col], [exactly_once]) 参数说明: array:必需的参数,代表你想要从中提取唯一值的范围。 [by_col]:可选参数,一个逻辑值,用于指定是否按列(TRUE)或按行(FALSE,默认值)进行比较以返回唯一值。 [exactly_once]:可选参数,一个逻辑值,如果设置为TRUE,则函数仅返回数组中恰好出现一次的值。

>>>第二步:在H2单元格中输入公式【=FILTER($D$2:$D$9,($B$2:$B$9=F2)*($C$2:$C$9=G2))】,得到如下图所示的结果:

使用FIlter函数,在D2:D9单元格区域中筛选出了【客户名称=F2 且 地址分类=G2的数据】,返回的是二个单元格数据(是一个数组)。

FILTER函数是一个强大的动态数组函数,它可以基于指定的条件筛选出一个范围中的数据。下面是FILTER函数的基本使用方法: 函数语法 FILTER(array, include, [if_empty]) 参数说明 array:必需的参数,代表你想要筛选的数据范围。 include:必需的参数,是一个逻辑测试数组,用于确定哪些行或列应该包含在结果中。它的大小必须与array的行数或列数相同。 [if_empty]:可选参数,当筛选结果为空时,可以指定返回的值。

公式中使用了($B$2:$B$9=F2)*($C$2:$C$9=G2)这样的条件,表示了一个复合条件。

>>>第三步:使用Textjoin函数将筛选出的结果连接成一个字符串,所以在上一步的基础上,修改H2单元格的公式为:【=TEXTJOIN("/",TRUE,FILTER($D$2:$D$9,($B$2:$B$9=F2)*($C$2:$C$9=G2)))】,按回车后确认输入,得到如下图所示的结果:

使用Textjoin函数,将第二步中筛选出来的结果以/为连接符,连接成一个字符串。然后以公式复制方式向下填充,得到最终的结果,如下图示:

这里要注意的是:因为筛选区域相同,所以在公式中要用绝对引用地址。使用Unique、Filter及Textjoin等Excel中高阶函数轻松实现了复杂的筛选问题。

我是鉴水鱼老师,关注我,持续分享更多的Excel知识与操作技巧。

0 阅读:0