一对多查询,模式化公式请拿好
今天和大家分享一下模式化数组公式:
=INDEX(区域,SMALL(IF(条件,行号数组,4^8),ROW(A1)))
这个公式用来取得满足条件的多个值 , 如今已成为模式化的应用 , 被各位板油广泛运用 。
今天再和大家说说 , 在具有多个符合条件的情况下 , 提取和匹配方法~
有如图的数据表(名单列有重复)

文章图片
我们需要解决三种类型的问题:
1 , 李商隐第一次出现时的B列值;
2 , 李商隐最后一次出现时的B列值;
3 , 李商隐第2次出现时候的B列值 。

文章图片
前面两个问题是比较常见的 , 我们简要看一看 。
匹配第一个 , 可以直接用:
=VLOOKUP(E2,A2:B17,2,FALSE)
匹配最后一个 , 可以利用:
=LOOKUP(1,0/(A2:A17=E2),B2:B17)
这里重点要说明的是匹配第2个 。
接下来就看一下这个类型的公式(数组公式 , 要按Shift+Ctrl+回车三键结束):
{=INDEX(B$2:B$17,SMALL(IF(A$2:A$17=E$2,ROW($1:$16),4^8),2))}
先从最里层看:
IF(A$2:A$17=E$2,ROW($1:$16),4^8)
这个公式的结果是一个数组 , 它会依次判断A列值是否等于E2指定的条件 。
等于E2时 , 则会返回对应的行号 , 如1、12、13等……
不等于E2时 , 则直接返回4^8 , 也就是65536 , 一般的工作表到这里就没有数据了 。
整个的结果就是:
{1;65536;……;65536;12;13;65536;65536;65536}
再往外看 , 是SMALL(X,2)
这个简单 , 就是从上面得出的数组X中 , 选出第二小的值12 , 其实也就是A2:A17中的姓名第二次等于E2指定的姓名时 , 其序列位置 。
【一对多查询,模式化公式请拿好】最外层是INDEX(B2:B17,y)
上面已经用SMALL函数得出了具体的位置 , 这一步 , 就是在B2:B17中提取出这个位置的值 , 完成!!
以上便是INDEX+SMAll+IF的数组公式类型 , 掌握这个 , 想要匹配什么位置 , 就可以匹配什么位置~~
假如把最后一个参数2 , 换成ROW(A1) , 那么就可以下拉公式 , 依次提取所有对应值了 。
图文作者:Hoa小熊猫
推荐阅读
- 成都文理学院|考生称两次查询艺考成绩不一致 成都文理学院回应
- 保障交易安全,闵行推出“存量房购房资格”前置查询服务
- 热点|合格变不合格?考生称两次查询艺考成绩不一致,成都文理学院回应
- 文理学院|考生称两次查询艺考成绩不一致 成都文理学院回应
- 交管|交管12123怎么查各科成绩?交管12123驾考成绩查询教程
- 交管12123怎么查各科成绩?交管12123驾考成绩查询教程|交管12123怎么查各科成绩?交管12123驾考成绩查询教程
- 北京中招统一批次录取结果今可查询 高中校分数线“水涨船高”
- 2020年山东事业编成绩公布了吗?事业单位成绩何时查询?
- 法制|山西“侵害未成年人违法犯罪信息库管理暨入职查询系统”上线
- 大灰狼|山西“侵害未成年人违法犯罪信息库管理暨入职查询系统”上线
