zstarling
- 语法: LOOKUP(查找值,查找区域,结果区域)
- 举例: LOOKUP(1,0/((\$A$2:\$A\$9=E2)*(\$B\$2:\$B\$9=F2)),\$C\$2:\$C$9)
- 语法: VLOOKUP(查找值,查找区域,结果区域,精确/模糊匹配)
- **模糊查询(TRUE/1)结果展示:**
- **精准查询(FALSE/0)结果展示:**
语法: LOOKUP(查找值,查找区域,结果区域)
- 注意: Lookup() 多条件查找时无需排序,正常LOOKUP函数要求“查找区域”中的值必须按升序排列,因为是二分法原理
举例: LOOKUP(1,0/(($A$2:$A$9=E2)*($B$2:$B$9=F2)),$C$2:$C$9)
- 自测公式 =LOOKUP(1,0/(($O$1:$O$22=C1)*($P$1:$P\$22=D1)),$R$1:$R$22)
- 条件值显示:=LOOKUP(1,0/(
({FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE})
*
({FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE})
),
$RR$22)- 查找值显示: =LOOKUP(1,
• {#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;0;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!},
$RR$22)
分解步骤:
- 第一步,括号内$A$2:$A$9=E2和$B$2:$B$9=F2,两个等式,很明显,分别代表两个条件。
- 注意
- 一,范围在等号前面,值在等号后面。顺序不能乱;
- 二,返回的结果分别是一串数组而不是单一的值。这里数组里的数据有两种,TRUE和FALSE
- 第二步,两个条件相乘,专业术语称为【逻辑与】,即两条件同时满足,返回的结果,由于两个条件每个返回的都是一串数组,那么相乘得到的结果,也是一串数组,而非单一的值。
- 注意 :这里的数组数据也是两种,0和1。
- 第三步,用零值,去除以第二步得到的结果,那么原本第二步是0值的,0作为分母无意义,返回错误值#DIV/0!,而仅有第二步结果为1的,正确算出结果得到零值。
- 第四步,
- 第五步,接下来就是二分法原理了,在只有0和错误值组成的数组中,查找数字1,由于LOOKUP函数使用二分法,默认数据从小到大排序,二分值0比1小,就会一直往下查找,于是就找到了最后一个0值(LOOKUP函数忽略错误值,故二分法不会找到错误值),这条数据就是同时满足两个条件的、我们所需要的数据了。
- 回到我们第三步提出的疑问,用零值去除以第二步的结果,意义何在?
- 很简单,意义就在于将不符合条件的值从第二步的结果0,转变为错误值#DIV/0!,这样就可以避免LOOKUP函数查找时,在一 堆0和1组成的数组中,用二分法查找1,这样是不准确的,
所以,用0去除,将第二步结果为0的转变为错误值,LOOKUP就可以直接将其PASS掉不考虑。
前三步图解,示例:
语法: VLOOKUP(查找值,查找区域,结果区域,精确/模糊匹配)
条件结果:
给额 | 价格 |
0 | 0 |
1 | 550 |
10001 | 650 |
20001 | 1500 |
50001 | 2500 |
模糊查询(TRUE/1)结果展示:
模糊查询可以做分组查询时候匹配
给额 | 价格 | 公式 |
0 | 550 | VLOOKUP(S18,$ST$6,2,TRUE) |
1500 | 550 | VLOOKUP(S19,$ST$6,2,TRUE) |
4500 | 550 | VLOOKUP(S20,$ST$6,2,TRUE) |
6500 | 550 | VLOOKUP(S21,$ST$6,2,TRUE) |
10000 | 550 | VLOOKUP(S22,$ST$6,2,TRUE) |
12500 | 650 | VLOOKUP(S23,$ST$6,2,TRUE) |
21500 | 1500 | VLOOKUP(S24,$ST$6,2,TRUE) |
90500 | 2500 | VLOOKUP(S25,$ST$6,2,TRUE) |
精准查询(FALSE/0)结果展示:
给额 | 价格 | 公式 |
0 | 0 | VLOOKUP(S18,$ST$6,2,0) |
10001 | 650 | VLOOKUP(S19,$ST$6,2,0) |
50001 | 2500 | VLOOKUP(S20,$ST$6,2,0) |
10001 | 650 | VLOOKUP(S21,$ST$6,2,0) |
10001 | 650 | VLOOKUP(S22,$ST$6,2,0) |
20001 | 1500 | VLOOKUP(S23,$ST$6,2,0) |
1 | 550 | VLOOKUP(S24,$ST$6,2,0) |