查找功能相信大家都不陌生,电脑上大部分的软件都是有自带查找功能的,但是很多时候没办法快速定位到摸一个值,Excel只需要配合这INDEX+SMAll+IF三个函数,即可完美解决
=INDEX(区域,SMALL(IF(条件,行号数组,4^8),ROW(A1)))
这个公式用来取得满足条件的多个值,如今已成为模式化的应用,被各位板油广泛运用。
今天再和大家说说,在具有多个符合条件的情况下,提取和匹配方法~
有如图的数据表(类型列有重复)
我们需要解决三种类型的问题:
1,射手第一次出现时的B列值;
2,射手最后一次出现时的B列值;
3,射手第n次出现时候的B列值(假设n=2)。
前面两个问题是比较常见的,我们简要一看。
匹配第一个,可以直接用:
=VLOOKUP(E2,A2:B13,2,FALSE)
匹配最后一个,可以利用:
=LOOKUP(1,0/(A2:A13=E2),B2:B13)
这里重点要说明的是匹配第n个。
接下来就看一下这个类型的公式(数组公式,要按Shift+Ctrl+回车 三键结束):
{=INDEX(B$2:B$13,SMALL(IF(A$2:A$13=E$2,ROW($1:$12),4^8),2))}
先从最里层看:
IF(A$2:A$13=E$2,ROW($1:$12),4^8)
这个公式的结果是一个数组,它会依次判断A列值是否等于E2指定的条件。
等于E2时,则会返回对应的行号,如1、12、13等……
不等于E2时,则直接返回4^8,也就是65536,在Excel2003版本里,这个65536就是一列中的最大行号,一般的工作表到这里就没有数据了。
整个的结果就是:
{1;65536;……;65536;12;13;65536;65536;65536}
再往外看,是SMALL(X,2)
这个简单,就是从上面得出的数组X中,选出第二小的值12,其实也就是A2:A13中的姓名第二次等于E2指定的姓名时,其序列位置。
最外层是INDEX(B2:B13,y)
上面已经用SMALL函数得出了具体的位置,这一步,就是在B2:B13中提取出这个位置的值,完成!!
这里可能有朋友发现E2需要手动输入,别忘记了,我们前面还有学习了
验证数据这个知识点,直接做个下拉;
弄好验证数据下拉后,我们再来看看演示效果吧:
以上便是INDEX+SMAll+IF的数组公式类型,掌握这个,想要匹配什么位置,就可以匹配什么位置~~
假如把最后一个参数n,换成ROW(A1),那么就可以下拉公式,依次提取所有对应值了。