说到查询,是不是大家想到的就是vlookup。但是vlookup只能用于一对一的查询。如果一个查找值有对应多个目标值,这种一对多的查找是vlookup解决不了的。今天给大家说说这种一对多的查找要如何实现。

以下面的例子为例,一个产品有不同的有效期,我需要查找出来并放在对应的产品下面,这个时候就需要用到index+small+if的结合。

Excel一对多查询巧用【index+small+if】组合-天天办公网

公式:

=IFERROR(INDEX($R$1:$R$12,SMALL(IF($Q$1:$Q$12=U$1,ROW($Q$1:$Q$12)),ROW(Q1))),””)

公式解析:

①用Small+IF函数构成数组来确定第几个值:

IF($Q$1:$Q$12=U$1,ROW($Q$1:$Q$12))

==如果Q列的值等于U$1,就返回对应的行,如果不等于,就为FALSE

==即:

{FALES,2,FALSE,FALSE,5,FALSE,FALSE,8,FALSE, FALSE, FALSE, FALSE }

SMALL(IF($Q$1:$Q$12=U$1,ROW($Q$1:$Q$12)),ROW(Q1))

Small(数值范围,第几个最小值)

==在IF函数构成的数组里面,定位到第ROW(Q1)个的最小值,返回的结果即是行序号。比如在{FALES,2,FALSE,FALSE,5,FALSE,FALSE,8,FALSE, FALSE, FALSE, FALSE }里,第一个最小值是2,Small函数返回的是2,第二个最小值是5,Small函数返回的是5……以此类推。

★ROW(Q1)这里的“相对引用”,也就是下拉的时候会变成ROW(Q2)/ROW(Q3)……目的是为了能定位到第1/2/3……个最小值

②用INDEX来定位

INDEX($R$1:$R$12,SMALL(IF($Q$1:$Q$12=U$1,ROW($Q$1:$Q$12)),ROW(Q1)))

INDEX (数据范围,行序号,列序号)

== INDEX(在$R$1:$R$12里,定位到符合条件的行号)

这样子出来的结果就是查找到产品的不同有效期了~如果觉得难以理解的话可以直接复制公式,修改相关参数就好~

下面附上计算的过程更方便大家理解~

Excel一对多查询巧用【index+small+if】组合-天天办公网

其实不用公式直接用数据透视表+vlookup也能轻松实现,大家想到这样子操作的实现步骤吗?

#百粉##你知道Excel使用技巧吗#