一对多查询,超实用的函数教程

今天和大家分享的是如何快速获取符合某个条件的第N个数。

如果这个问题改为获取最大的数,那一定很好解决,但是工作中不但要知道第一高峰是珠穆朗玛峰,还需要知道第二高峰是乔戈里峰,第三高峰是干城章嘉峰。

怎么样?看本公众号还可以学习地理知识吧!

咳咳,鉴于我一直是很严肃的小编,在此,正式和大家分享。

需求如下,小编所在的年级的成绩排行如下:

我想根据年级的成绩排名,获取一班的前三名的名称,就是标黄色的!

至此,读者一定有两个问题?

1、阿凯是谁? 2、为啥他是0分?

答:1、阿凯是小编,2、你和这么多美女一个班级,你会好好学习哇!!!!

怎么得到这个答案的尼~~~~~

直接把答案粘贴下来吧:

{=INDEX(B1:B9,SMALL(IF(C2:C9="一班",ROW(C2:C9),100),G2))}

我翻译一下:

{=INDEX(姓名列表,SMALL(IF(班级信息="一班",ROW(班级信息),一个很大的数),第几名))}

至此,如果能够读懂这个函数的人,可以直接关掉本篇内容,继续和苍老师谈人生好了!

还在的亲们,介绍几个函数给各位亲:

1、IF函数,最常用的判断函数,咋用呢?

=IF(判断条件,为真返回什么,为假返回什么)

例子:

=IF(小编=最帅的人,“真有眼光”,“不喜欢我的人多了,你算老几!”)

返回值是“真有眼光”

2、Small函数,返回某个数组的第N个小的值

姐妹函数是Large,返回某个数组的第N个大的值

=Small(数组,第几个小的数)

例子:

=Small({4,3,1,2,8},3) 返回值是3

3、Index函数,引用函数,返回某个数组的第几个值

注意:这里是没有进行排序的,直接按照顺序返回第几个

=Index(数组,第几个值)

=Index({4,3,1,6,8},3) 返回值是1

知道Index和Small的区别了吧!

4、Row函数,返回某个单元格的对应行数

=Row(单元格)

=Row(C4) 返回值是4

啰嗦这么多,你们肯定把问题都忘了,重新上图

我想获取一班第一至第三名需要怎么做呢?简述一下思路

知道哪些人是一班的->得到他们的行号->然后找到第几小的行号信息->返回行对应的姓名

慢动作分解第一次!

第一步:我需要知道哪些人是一班的(用IF语句实现)

如果他是一班的,返回他对应的行数,如果不是一班的,我就赋予他一个很大的值(本案例赋值100)

语句实现:

=IF(C2:C9="一班",ROW(C2:C9),100)

翻译:IF(班级信息="一班",ROW(班级信息),100)

由于班级信息是{一班,二班,二班,一班,一班,一班,二班,一班}

所以IF的返回值就是{2,100,100,5,6,7,100,9}

第二步:接下来要获取第一名所对应的行信息

语句实现:

=Small({2,100,100,5,6,7,100,9},1)

如果是第一名就返回的是2,如果是第二名返回的就是5

这二步实现了获取不同名次的行信息。

第三步:知道了行信息,返回对应的姓名

语句实现:

=Index(姓名列表,返回第几个姓名)

整体函数的实现思路就是这样!

如果不清楚,慢动作分解第二次!

第一步:判断语句,如果是一班,返回行数,如果不是,返回100

=IF(C2:C9="一班",ROW(C2:C9),100)

第二步:获取上面数组中第N个小的值(本案例获取第二个小的)

=SMALL(F2:F9,2)

第三步:返回第五行对应的姓名信息

整个函数的逻辑引用精华就是在上面这个图啦,然后就将上一个步骤的函数嵌套到下一个函数的里面就好!

结论性的公式如下:

{=INDEX(B1:B9,SMALL(IF(C2:C9="一班",ROW(C2:C9),100),G2))}

看到外面的{ }了没,这个不是人为输入的,而是因为用到了数组,所以编辑好函数后,要用Ctrl+Shift+Enter结束,结束后自动添加{}!

如果还想优化一下的话,可以做个绝对引用!

{=INDEX($B$1:$B$9,SMALL(IF($C$1:$C$9="一班",ROW($C$1:$C$9),100),G2))}

今天就到这里!

感谢观看!

原文发布于微信公众号 - 阿凯的Excel(akexcel)

原文发表时间:2017-01-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ml

c++课程设计(日历)

今天比较无聊,就随便找了个程序设计来做,下面是源代码,以及效果图...不喜请喷! /*题目1:年历显示。 功能要求: (1) 输入一个年份,输出是在屏幕上...

2485
来自专栏ACM小冰成长之路

51Nod-1203-JZPLCM

ACM模版 描述 ? 题解 这个题的解法好像好多好多,可以线段树解,自然也可以用树状数组解,还有大佬直接莫队推过,我这里用的树状数组搞得。 首先将数进行拆解,拆...

16610
来自专栏CDA数据分析师

Excel简化办公系列之一 | VLOOKUP代替IF函数

本文为CDA作者青菜原创文章,转载请注明来源 编者按:CDA作者青菜将在近期发布「Excel简化办公」系列文章,本文是第一篇;更多精彩请持续关注~ 在日常工作...

2049
来自专栏程序你好

幽默的程序员:10 个有趣的程序员笑话

642
来自专栏逸鹏说道

Python3 与 C# 面向对象之~异常相关

又到了开新课的时候了,小明同学这次提前预习了知识,乘着老师还没来就在黑板上写下了这段Code:

893
来自专栏CVer

资源 | 十分钟速成Python

Amusi 今天不推论文速递、不推论文精读,不聊知识点。Amusi 知道关注CVer的同学们都是机器学习、深度学习、CV或者NLP方向的研究者,毋庸置疑,Pyt...

653
来自专栏数据结构与算法

P3227 [HNOI2013]切糕

题目描述 经过千辛万苦小 A 得到了一块切糕,切糕的形状是长方体,小 A 打算拦腰将切糕切成两半分给小 B。出于美观考虑,小 A 希望切面能尽量光滑且和谐。于是...

34010
来自专栏数据结构与算法

codechef Table Game(博弈)

maya这题我前前后后 断断续续的做了一个星期才A掉。CC一场challenge出两道打表题可有点过分了啊。。

291
来自专栏前端说吧

JS-抽奖系统-实现原理

3534
来自专栏marsggbo

(原创)详解KMP算法

KMP算法应该是每一本《数据结构》书都会讲的,算是知名度最高的算法之一了,但很可惜,我大二那年压根就没看懂过~~~ 之后也在很多地方也都经常看到讲解KMP算法的...

2017

扫描关注云+社区