各种Excel版本下的一对多查询,这几个公式能搞定90%

一对多查询:根据一个条件查询多个结果 。
一对多查询有着很广泛的应用需求,也是较为复杂的话题 。好在Excel2021版本中推出的筛选函数FILTER可以轻松化解 。
并不是所有用户都会直接升级到最高版本 , 不同情况不同版本下的一对多查询模板化公式,仍然是一个值得分享的话题 。


高版本一对多查询,一维数据

高版本Excel中的新函数FILTER,按条件筛选数据 。
例如,查询市场部的员工,FILTER筛选姓名即可,筛选条件是“市场部”:
=FILTER(B3:B12,C3:C12="市场部")
各种Excel版本下的一对多查询,这几个公式能搞定90%

FILTER一对多查询

低版本一对多查询,一维数据

在没有FILTER的版本中,INDEX SMALL ROW是一个经典的组合应用:
=IFERROR(INDEX(B:B,SMALL(IF(C:C="市场部",ROW(C:C),""),ROW(1:1))),"")
IF(C:C="市场部",ROW(C:C),""):返回市场部单元格所在的行号;
SMALL(IF,ROW):下拉过程中分别返回第1小的行号,第2小的行号……
INDEX(SMALL(IF,ROW)):根据上一步返回的行号,从B列提取对应的姓名;
IFERROR则是防止下拉过多产生错误值,省略也不会影响正确数据 。
各种Excel版本下的一对多查询,这几个公式能搞定90%

INDEX SMALL ROW 一对多查询

高版本一对多查询 , 二维数据

按部门提取员工姓名并按行显示:
=TOROW(FILTER(B:B,C:C=E3))
FILTER查询,TOROW转为横向显示 。
各种Excel版本下的一对多查询,这几个公式能搞定90%

FILTER TOROW

低版本一对多查询 , 二维数据

=IFERROR(INDEX($B:$B,SMALL(IF($C:$C=$E3,ROW($C:$C),""),COLUMN(A:A))),"")
公式用法和逻辑上与一维数据雷同,SMALL的第2参数改为COLUMN.
各种Excel版本下的一对多查询,这几个公式能搞定90%

INDEX SMALL COLUMN 一对多查询

方法多种多样,以上几个具备一定的通用性 。另外还有:
VLOOKUP COUNTIF 辅助列,允许存在辅助列的场景中是个不错的选择;
【各种Excel版本下的一对多查询,这几个公式能搞定90%】TEXTJOIN IF,适用于将查询结果放到一个单元格个中的场景 。

相关经验推荐