完全理解vlookup多条件查询

看了半天感觉大家讲的不是很清楚,明明并不复杂。另外用vlookup多条件查询并不需要shift+enter

忽略不精确查找的情况(range_lookup=1)因为我目前用不到。

先说一下解决方法:=vlookup(条件1&条件2,if({1,0},查询列1&查询列2,输出列),2)

下文是如何理解:

以下图两个条件查询为例,在AB列查询E2与F1条件,输出C列对应的结果

前两个部分很好理解,通过&连接两个条件或两个数组(E2&F1),实际上是创造了辅助列,把多条件转化为单条件,也就是查询值变成了‘ALB1’,查询数组变成了B与A合成的一列

查询值:ALB&1(ALB与1)          查询数组:B:B&A:A (B与A列)

真正需要理解的是IF的使用和查询结果在查询数组中的序号(col_index_num),本质上它的目标是把需要作为查找条件列合并成一列,同时纳入结果列,整合成一个拼接的多列(实例中为两列)结果。

首先回想一下单条件查询时的各个参数:

查找条件,在哪里查找,查询结果在查找的哪个位置(同时默认查询列是查找位置的第一列)

单条件查询时,我们可以做到查询数组是n:m的多列结构,所以能通过col_index_num参数来引用该多列结构中的某列

而多条件查询中,由于条件是通过连接缝合起来的辅助列,没有了多列的结构,就需要别的方法来创建这个可引用位置的结构,这就用上了IF函数。

平时用 if大多只用来做单次判断,其实也可以做到多次判断。需要区分 ifs是多条件判断。

IF能够通过在条件判断里进行多次判断做到我们需要的多类输出,由此可以利用它创建我们需要的可引用位置的结构。

示例:

多次判断条件:{1,0},即第一次判断条件为1,第二次判断条件为0

判断结果为True则输出2,False则输出3,

右图为结果(1=True,0=False)

实例中你需要输出位置col_index_num是2的,就是查询到判断结果里的第二列‘3’;输出位置col_index_num是1的,就查询到第一列的‘2’。

使用方案:if({1,0},查询列1&查询列2,输出列)

使用方案中需要输出你想要的输出列,就是要通过vlookup中指明col_index_num是2,来查询到if输出的判断结果里的第二列——输出列,可以指定col_index_num为1来查看一下拼接的查询列是什么状态。

那么到这里应该能够理解vlookup(条件1&条件2,if({1,0},查询列1&查询列2,输出列),2)了。

总结一下:

  1. 通过&连接查询条件与查询列
  2. 通过if让查询列与输出列形成一体的多输出结构

可以看到,if 的参数顺序也满足了vlookup要求查询列在第一列的要求,当然也可以调换为if({0,1},输出列,查询列1&查询列2)的形式。

多条件只需继续通过&连接即可,这样的结构还避免了vlookup参数中table_array里有很多无关的列有可能不小心引用到错误结果的情况。

有没有办法实现列的不连续引用来替代这个if 呢?欢迎讨论~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值