加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

学EXCEL函数,怎能不会这个组合套路……

(2016-07-01 21:58:45)
标签:

杂谈

作者:@EXCELERS

我们对数据进行查询时,经常会使用VLOOKUP函数。

但有时,我们会碰到这样的问题,提取符合条件的结果是多个,而不是一个,这时候VLOOKUP就犯难了。

举个例子,如下图,左侧A1:C10是一份学员名单表,现在需要根据F1单元格的“EH图班”这个指定的条件,在F2:F10单元格区域中,提取该班级全部学员名单。

http://ww2/large/005IRek6gw1f5eq569yzzj30f008wwgq.jpg


比如F1的值是EH图表班的信息,需要在F2:F10单元格区域得到图表班相关成员的人名。

这事如果用VLOOKUP来处理——当然也不是不行。

很多朋友认为VLOOKUP只能提取首个查询匹配结果,实际上,稍微准确的说法应该是,VLOOKUP只能提取某个查询区域的首个匹配查询结果。

这两句话有什么不同?后者多了一个定语:某个查询区域。

江湖传言,位置总是相对的。那么当查询区域处于一个变动的区域,VLOOKUP自然可以提取符合条件的多个结果。

比如此处如果使用VLOOKUP,可以在F2使用数组公式向下填充:

=IFERROR(VLOOKUP($F$1,INDIRECT("A"&SMALL(IF(A$2:A$10=$F$1,ROW($2:$10)),ROW(A1))&":C10"),2,0),"")

当然,我们今天不讲VLOOKUP的这个解法,它属于低效偏冷的解法,仅供感兴趣的朋友籍此开拓下VLOOKUP的用法思路,所以此处就不再细讲了。

今天说一个函数查询方面的万金油套路:Index Small IF。


F2单元格输入以下数组公式,按住Ctrl Shift键不放,再按回车键,然后向下填充:

=IFERROR(INDEX(B:B,SMALL(IF(A$1:A$10=F$1,ROW($1:$10)),ROW(A1))),"")

这个公式看起来可就比上面那个VLOOKUP的解法苗条养眼多了,坦白的说,很搭俺星光十年后的匪号——小清新。

http://ww3/large/005IRek6gw1f5eq66njtxj30bu0cotb7.jpg


1.公式讲解

IF(A$1:A$10=F$1,ROW($1:$10))

这部分,先判断A1:A10的值是否等于F1,如果相等,则返回A列班级相对应的行号,否则返回FALSE,结果得到一个内存数组:

{FALSE;2;3;FALSE;FALSE;FALSE;FALSE;8;FALSE;10}

SMALL(IF(A$1:A$10=F$1,ROW($1:$10)),ROW(A1))

SMALL函数对IF函数的结果进行取数,随着公式的向下填充,依次提取第1、2、3……n个最小值,由此依次得到符合班级条件的行号。

随后使用INDEX函数,以SMALL函数返回的行号作为索引值,在B列中提取出对应的姓名结果。

当SMALL函数所得到的结果为错误值#NUM时,意味着符合条件的行号已经被取之殆尽了,此时INDEX函数也随之返回一个错误值,为了避免公式返回一个错误值,最后使用IFERROR函数进行规避,使之返回一个假空:””。

2.其它说明

很多时候,一些朋友喜欢把INDEX SMALL IF的套路写成:

=INDEX(B:B,SMALL(IF(A$1:A$10=F$1,ROW($1:$10),4^8),ROW(A1)))&""

=INDEX(B:B,SMALL((A$1:A$10<>F$1)/1% ROW($1:$10),ROW(A1)))&""

这两个套路,通过引值真空单元格搭配&””的方法,很巧妙的规避了错误值的出现,而且公式的长度得到了精简,是IFERROR函数未出现前处理错误值的常用技巧。只是当公式的查找结果为数值或者日期时,这个方法会把数值变成文本值,并不利于数据的准确呈现以及再次统计分析。

比如一个简单的SUM求和,对于此类文本数据的统计都是麻烦的,原因是大部分统计函数都忽略文本值,不予计算。

所以通常还是建议大家使用IFERROR函数来处理错误值。

3.练手题

最后留下一道练手题,如下图,根据A1:C10区域的数据,将E列相关班级的姓名,填充到F2:I5区域。——拱手,祝按,挥手,下次再见喽。

http://ww2/large/005IRek6gw1f5eq8t5g9vj30fk088mzo.jpg

照例示例文件下载:百度网盘




0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有