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

今天和大家分享的是如何快速获取符合某个条件的第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 条评论
登录 后参与评论

相关文章

来自专栏我的博客

MySQL全文索引

1.全文搜索限制条件 文搜索只适用于 MyISAM 表。 全文搜索可以同大多数多字节字符集一起使用。Unicode属于例外情况; 可使用utf8 字符集 , ...

3385
来自专栏Flutter入门

Flutter开发实战分析-pesto_demo解析

以下代码基本参考于 flutter_gallery中的pesto_demo示例。(可以结合本文看源码)

992
来自专栏菩提树下的杨过

Flash/Flex学习笔记(34):AS3中的自定义事件

类似C#中自定义事件需要一个自定义的EventArgs子类一样,AS3也需要开发者自定义一个Event类的子类,这里我们假设一种场景:设计一个Person(人物...

1717
来自专栏web编程技术分享

js正则表达式简单应用

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

18:Tomorrow never knows?

18:Tomorrow never knows? 总时间限制: 1000ms 内存限制: 65536kB描述 甲壳虫的《A day in the life》...

3505
来自专栏木宛城主

工欲善其事,必先利其器:分享一套Code Smith 搭建N层架构模板

 开篇 平常开发时,由于冗余代码过多,程序员做重复的工作过多势必会影响开发效率。倘若对重复性代码简单的复制、粘贴,虽然也能节省时间,但也需仔细一步步替换,这无...

1738
来自专栏数说工作室

【SAS Says】基础篇:4. ODS的使用

你不可能总是在SAS上查看结果,如果结果很多你要一一的讲结果复制到word中去,有ODS就好啦!它可以把SAS的结果直接输出到word、PDF等文件中。 并且,...

41710
来自专栏GIS讲堂

Arcgis for Javascript之featureLayer图和属性的互操作

说明:主要实现加载FeatureLayer与显示属性表,并实现属性表与地图的联动,首先,看看实现后的效果:

552
来自专栏Fundebug

JavaScript函数重载

1174
来自专栏晓晨的专栏

C#自动识别文件编码

1773

扫码关注云+社区