在Excel中进行查找一般都用VLOOKUP和INDEX+MATCH,但是这些函数都只能返回一个匹配结果。比如:

尽管在右边的表中有两行都是可乐类的产品,但是VLOOKUP只返回第一个值。用MATCH也类似。

那么,如果想要把所有匹配的行都返回,应该怎么办?

01

第一种方法 Index+Small

这里,我们需要用到一个比较复杂的公式:

=INDEX($G$3:$G$6,SMALL(IF($F$3:$F$6=B3,ROW($F$3:$F$6)-2,1000),ROW()-2))

这是一个数组公式,需要用CTRL+SHIFT+ENTER输入。

下面简单介绍一下这个公式。

先看最内层的部分:

SMALL(IF($F$3:$F$6=B3,ROW($F$3:$F$6)-2,1000),ROW()-2)

SMALL是一个很简单的函数,就是从一堆数中选择第n小的值,例如SMALL({2,1.5,8},1)就是返回第一小的值,结果就是1.5。

在我们的公式中,SMALL的第一个参数是一个IF函数,这个函数去判断F列每个单元格bu是否跟B3单元格相等,如果是,就返回F列对应单元格的行号,如果不是,就返回1000(实际上是一个比较大的数,超过可能的最大行号即可),第二个参数就是取第几小的值,因为B3单元格对应的是第一个返回结果,所以取第1小的值:ROW()-2=3-2=1。

这部分公式的计算过程就是:

于是,整个公式就变成了:

INDEX($G$3:$G$6,2)

得到了一个匹配值。

通过拖拽填充即可得到后续的结果:

但是,如果填充超出了我们需要的行数,就会返回错误。此时,我们可以使用IFERROR来进行处理:

=IFERROR(INDEX($G$3:$G$6,SMALL(IF($F$3:$F$6=B3,ROW($F$3:$F$6)-2,1000),ROW()-2)),"")

02

提高公式可读性

这个公式只用了两个函数嵌套在一起:INDEX和SMALL(ROW函数很简单,所有不算),总体不算复杂。但是可读性还是比较差,不容易一下就看明白这个公式的作用:

我们可以通过定义名称来提高公式的可读性:

再定义G列为产品明细:

于是公式可以写为:

=IFERROR(INDEX(产品明细,SMALL(IF(类别=B3,ROW(类别)-2,1000),ROW()-2)),"")

一个就知道这些参数的含义。

好了,今天的分享就到这里了!

c++函数返回多个值_Excel函数技巧之返回多个匹配结果相关推荐

  1. JavaScriptjQuery.返回多个值的函数

    返回多个值的函数 例子 <!DOCTYPE html><html lang="zh"><head> <meta charset=" ...

  2. Python实战从入门到精通第十三讲——返回多个值的函数

    构造一个可以返回多个值的函数 能返回多个值,函数直接return一个元组就行了.例如: >>> def myfun(): ... return 1, 2, 3 ... >> ...

  3. C++ Primer Plus P31 编程练习(调用一个用户自定义的函数(以光年值为参数,并返回对应天文单位的值)——中职

    C++ Primer Plus P31 编程练习 第六题 编写一个程序,其main()调用一个用户自定义的函数(以光年值为参数,并返回对应天文单位的值).该程序按下面格式要求输入光年值,并显示结果: ...

  4. excel公式 某一个单元格等于另一个单元格的值_EXCEL函数学习5——COUNTIF函数

    [标签] excel函数.统计函数 前面我们学习了COUNT函数,我们回顾一下: count函数很简单,就是统计一个或多个区域的数字个数.相对来说,countif函数多了一个if,也就是可以增加条件了 ...

  5. python函数返回多个值_python函数返回多个值的示例方法

    python可以返回多个值,确实挺方便 函数里的return只能返回一个值,但是返回类型是没是限制的 因此,我们可以"返回一个 tuple类型,来间接达到返回多个值". 例子是我在 ...

  6. python自定义函数中return可以返回多个值_python函数return返回多个值

    在函数中一旦使用return,那么函数就会停止往下执行!但是,我们有时候需要函数返回多个值,怎么实现呢?其实python的return可以返回多个值,而且Python 会自动将多个返回值封装成元组. ...

  7. java返回一个布尔值_关于java:返回布尔值的方法

    好的,所以我的问题是关于布尔值的回报. 对于我的Comp Sci作业,我必须使用方法制作课程注册程序,其中之一是添加课程方法. 基本上,您在目录中搜索该班级,如果匹配,则将其添加到学生时间表中,并返回 ...

  8. mysql插入数据返回主键值_Mysql插入记录后返回该记录ID

    最近和Sobin在做一个精品课程的项目,因为用到一个固定的id作为表间关联,所以在前一个表插入数据后要把插入数据生成的自增id传递给下一个表.研究了一番决定使用Mysql提供了一个LAST_INSER ...

  9. 数组第一个值_Excel公式技巧69:查找第一个非空值

    学习Excel技术,关注微信公众号: excelperfect 在<Excel公式技巧63:查找最后一行>中,我们使用LOOKUP函数的公式获取最后一个值或该值所在的行号.如果列表中的前面 ...

  10. 转载:(C/C++函数返回多个值)

    当我们在处理一个数组的时候常常会碰到这样的问题:输入一个数组,和数组的一个元素,返回该元素所在行数和列数.这样就需要返回多组两个值,且组数不定.上述类型的函数在c语言程序里面存在两个问题.第一,函数只 ...

最新文章

  1. [CCC 2018] 平衡树
  2. 联合国发布AI报告:自动化和AI对亚洲有巨大影响【附报告下载】
  3. 电商总结(八)如何打造一个小而精的电商网站架构
  4. 外企软件测试笔试,外企软件测试面试题目50道
  5. python 示例_带有示例的Python字典update()方法
  6. nodejs: mkdirs 递归创建目录
  7. Client访问Tomcat简单流程(Struts2)
  8. 关于预编译和Stdafx.h的若干问题
  9. ExtJs之ExtJs.Model验证
  10. 著名游戏公司CAPCOM与WAX达成合作 将推出“街头霸王”主题NFT
  11. tortoiseSVN svn+ssh
  12. 厦门高职计算机专业,厦门高职,厦门高职学校,厦门高职学校哪个相对好一些 - IT教育频道...
  13. ai智能和大数据测试_测试版可帮助您根据自己的条件创建数据和AI平台
  14. java面试自我介绍
  15. Gateway服务网关
  16. 一文说清长安链ChainMaker同步模块
  17. 电脑如何设置日程提醒闹钟
  18. Airbnb产品数据分析
  19. 2021年茶艺师(初级)模拟考试及茶艺师(初级)实操考试视频
  20. Centos7 源码编译安装linux longterm 内核4.19.47

热门文章

  1. 极光短信验证码JAVA_Android如何集成极光短信验证
  2. 数据结构实验5-递归
  3. stm32双串口通信_一文读懂,基于 STM32 和 CAN 总线的温度监控系统的设计方法
  4. vs没有windows窗体应用_既能防木马病毒又能多开应用,这款软件 Windows 不能没有!...
  5. 看书学python靠谱吗_自学Python靠谱吗?
  6. linux下回收站在哪个文件夹,linux回收站在哪里
  7. springboot开启缓存_springBoot与缓存使用
  8. 甘肃计算机报名准考证打印,2019年9月甘肃计算机等考准考证打印入口已开通
  9. 【HDOJ6071】Lazy Running(同余最短路思想)
  10. hdu2553N皇后问题(打表)