打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
今日头条

我最近分享上了瘾,为了赚钱也可以说是很拼命啊。为了让各位朋友能够看得爽,学得好,快速地掌握Excel技能,提高工作效率,从而实现升职加薪。我七点钟起来就开始写了。前两天介绍了一个高手必备函数:indirect,被网友评为“Excel高手和小白的分水岭”,见文章:Excel高手必备的最为灵活实用的引用函数:Indirect。我即将介绍的这个函数,甚至连很多在公司被称为Excel高手的朋友都很少用到的函数:CHOOSE函数,这个函数几乎可以称之高手的独家秘笈了。这个函数基础部分毫不起眼,然而在很多案例它却能干很多其他函数很难办到的事情。

文:傲看今朝

一、CHOOSE函数具有什么特点?

CHOOSE作为一个单独的Excel函数,本身并不是很实用,说白了,它一生下来就是为给他人当“红娘”的,就像offset、indirect一样。顺便提一下,offset函数前面的文章也有介绍,有兴趣的可以看一下:引用函数中的极品:经典实用的offset函数。废话不多说了,咱们先来看看CHOOSE函数是什么鬼?

CHOOSE函数 说明

看官方说法根本不知道这个可以用来干什么:

根据给定的索引值,从参数串中选出相应值或者操作。

从上图中我们可以知道,此函数至少2个参数,最多可以有255个参数。那他具体能干啥呢,我们点击“有关该函数的帮助”:

示例说明

看到这个说明,有点明白了:这个函数主要是返回index_num(索引值,第1个参数,其实就是位置序号)在后面多个value(一般为值、单元格引用或者区域引用)中对应位置的单元格或者区域,比如:=CHOOSE(2,A2,A3,A4,A5)公式中2为index_num,即位置序号,除了2这个参数,剩下还有4个参数,从左至右排序,A2排第1,A3排第2,A4排第3……,位置序号为2,因此取第二个参数,也就是A3单元格了。

二、快速求学生分数等级

说到这里,我可能觉得这个函数没啥大用处,我们先来看看一个非常基础的实例(如下图所示):求学生的分数等级

实例一

这个实例中,跟上个例子唯一的不同,就是第一个参数不再是整数,而是通过公式得到的一个小数(CHOOSE函数默认取整数部分)。本例中CHOOSE使用非常灵活,但非常简单:将分数分成10个段,用前面的分数除以10即可得到索引值;每个段对应一个评价:前5个段(即0-59分)对应的评价都是“差”,第6、7段对应“中”……,这样一个简单的公式就可以搞定分数的等级评定了。

当然针对此问题而言,这种解决方法并非是最简单的方法,其他的mid函数、vlookup函数、lookup函数等都要比它简单得多,有兴趣的同学去查看我之前的文章。

三、经典实用的VLOOKUP+CHOOSE函数组合

前面我们就提到过,vlookup函数是有缺陷的,它只能从左往右进行查询,顺序一旦颠倒,它就非常吃力了,虽然可以实用if数组来置换,但那也不够灵活。因此vlookup+CHOOSE组合就出现了,这个组合的出现,让vlookup函数做逆向不再是梦。如下图,如何根据左侧表格完成右侧的查询呢?

如何实现上述效果

我们知道,如果学号列在左侧表格的最左侧,这个问题就非常简单,然而,图中的学号却是在左侧表格的最右侧,我们如何在vlookup函数将学号列都置换到左侧表格的最左侧呢?利用CHOOSE函数就可以轻松办到:

=CHOOSE({1,2,3,4},$D4:$D22,$A4:$A22,$B4:$B22,$C4:$C22)

不仅如此,我们还可以根据右侧的表格来调整左侧表格的顺序,以达到简化公式的目的。如此例将$B4:$B22调至最后位置,得到如下公式:

=VLOOKUP($G5,CHOOSE({1,2,3,4},$D4:$D22,$A4:$A22,$C4:$C22,$B4:$B22),COLUMN(B1),)

位置可以随意调换,if函数可做不到这么随心所欲

还是得提一下,利用vlookup+CHOOSE组合并非是解决此问题的最佳,要解决此问题,相对简单的还是index函数,看下图:

index函数也可以的哦。

关于index函数,请参阅我的文章:Index函数:低调的函数王者

四、利用CHOOSE函数做多表交叉查询

如下图所示,如何将放在不同sheet中的数据返回到汇总表进行查询,实现下图的效果?

强大的多表交叉查询

答案就是Index+Choose+Match函数组合,具体怎么来做呢?

思路分析:如果单纯只是查询一个表格的数据,我们利用index+match就可以搞定了,例如我们只查询2010年的数据,公式如下:

=INDEX('2010年'!B2:M6,MATCH(B4,'2010年'!A2:A6,),MATCH(B5,'2010年'!B1:M1,))

现在我们要从多个表格中任意一个表格返回值,而这些表格的结构都一样,既然表格结构都一样,他们我们的index+match组合的match部分是不会有变化的,唯一变得就是区域,而这个区域的变化是由上方的年份决定的。我们构建下方的公式:

=CHOOSE(MATCH(B3,ROW($2010:$2014)&'年',),'2010年'!B2:M6,'2011年'!B2:M6,'2012年'!B2:M6,'2013年'!B2:M6,'2014年'!B2:M6)

要得到B3单元格年份对应的数据表格区域,首先要构建一个索引值(index_num),然后将各个sheet的数据依次添加进去即可。

最终的公式为:

{=INDEX(CHOOSE(MATCH(choose多表交叉查询!B3,ROW($2010:$2014)&'年',),'2010年'!B2:M6,'2011年'!B2:M6,'2012年'!B2:M6,'2013年'!B2:M6,'2014年'!B2:M6),MATCH(B4,'2010年'!A2:A6,),MATCH(choose多表交叉查询!B5,'2010年'!$B$1:$M$1,))}

完美解决问题,收工!

这个问题单纯只用index+match嵌套也可以解决,大家写写看咯,毕竟这次的主角是CHOOSE函数。欢迎在评论区写下你的公式。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel中特别有用的不常用函数之Choose函数
突破vlookup函数只能首列查找
Excel里VLOOKUP只能查找第一列,想查找表格的其他列该怎么办?
原来Excel的两个函数还可以这么组合
Excel教程:vlookup与match嵌套,实现乱序查找提取
爱看
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服