一、学习

一对多查询模式化数组公式:

=INDEX(区域,SMALL(IF(条件,行号数组,4^8),ROW(A1)))

三键齐按(ctrl+shift+回车)

在具有多个符合条件的情况下,提取和匹配方法~

我们需要解决三种类型的问题:

1,李商隐第一次出现时的B列值;

2,李商隐最后一次出现时的B列值;

3,李商隐第n次出现时候的B列值(假设n=2)。

前面两个问题是比较常见的,我们简要一看。

匹配第一个,可以直接用:

=VLOOKUP(E2,A2:B17,2,FALSE)

匹配最后一个,可以利用:

=LOOKUP(1,0/(A2:A17=E2),B2:B17)

这里重点要说明的是匹配第n个。

接下来就看一下这个类型的公式(数组公式,要按Shift+Ctrl+回车 三键结束):

{=INDEX(B$2:B$17,SMALL(IF(A$2:A$17=E$2,ROW($1:$16),4^8),2))}

先从最里层看:

IF(A$2:A$17=E$2,ROW($1:$16),4^8)

这个公式的结果是一个数组,它会依次判断A列值是否等于E2指定的条件。

等于E2时,则会返回对应的行号,如1、12、13等……

不等于E2时,则直接返回4^8,也就是65536,在Excel2003版本里,这个65536就是一列中的最大行号,一般的工作表到这里就没有数据了。

整个的结果就是:

{1;65536;……;65536;12;13;65536;65536;65536}

再往外看,是SMALL(X,2)

这个简单,就是从上面得出的数组X中,选出第二小的值12,其实也就是A2:A17中的姓名第二次等于E2指定的姓名时,其序列位置。

最外层是INDEX(B2:B17,y)

上面已经用SMALL函数得出了具体的位置,这一步,就是在B2:B17中提取出这个位置的值,完成!!

以上便是INDEX+SMAll+IF的数组公式类型,掌握这个,想要匹配什么位置,就可以匹配什么位置~~

假如把最后一个参数n,换成ROW(A1),那么就可以下拉公式,依次提取所有对应值了。

用INDEX(大区域,SMALL(IF(条件区域=条件,ROW(条件区域),4^8),ROW(A1)))&""这种方式去屏蔽错误值,这种屏蔽错误值的思路是,如果条件区域=条件就返回条件区域行号,否则返回一个比较大的用不到的行号,比如说4^8行或数据区域下面的一个空行行号。这样,INDEX在输出完所有符合条件的行后开始调用4^8行的值(空单元格),为了避免返回0所以再加上一个&""。

二、应用

查找机构下属流失最严重的4个代理,横向展示

公式如下

主要注意点,三键齐按、$引用

Excel一对多查询(index+small+if)的更多相关文章

  1. Excel一对多查找

    很多人在Excel中用函数公式做查询的时候,都必然会遇到的一个大问题,那就是一对多的查找/查询公式应该怎么写?大多数人都是从VLOOKUP.INDEX+MATCH中入门的,纵然你把全部的多条件查找方法 ...

  2. 三层架构的一点理解以及Dapper一对多查询

    1.首先说一下自己对三层架构的一点理解 论坛里经常说会出现喜欢面相对象的写法,所以使用EF的,我个人觉得他俩没啥关系,先别反对,先听听我怎么说吧. 三层架构,基本都快说烂了,但今天还是说三层架构:UI ...

  3. mybatis0205 一对多查询 复杂

    查询所有用户信息,关联查询订单及订单明细信息及商品信息,订单明细信息中关联查询商品信息 1.1sql 主查询表:用户信息 关联查询:订单.订单明细,商品信息 SELECT orders.*, user ...

  4. mybatis0204 一对多查询

    查询所有订单信息及订单下的订单明细信息. sql语句 主查询表:订单表 关联查询表:订单明细 SELECT orders.*, user.username, user.sex , orderdetai ...

  5. atitit.导出excel的设计----查询结果 导出为excel的实现java .net php 总结

    atitit.导出excel的设计----查询结果 导出为excel的实现java .net php 总结 1. 基本的流程 查询获得list 读取jsp的table获得标题and 字段的map to ...

  6. Mybatis一对多查询得不到多方结果

    一对多查询:一个年级对应多个学生,现在要查询年级(带学生)信息. 查询结果: [main] INFO com.java1234.service.GradeTest - 查询年级(带学生)[main] ...

  7. 非关心数据库无法进行连表查询 所以我们需要在进行一对多查询时候 无法满足 因此需要在"1"的一方添加"多"的一方的的id 以便用于进行连表查询 ; 核心思想通过id进行维护与建文件

     非关心数据库无法进行连表查询 所以我们需要在进行一对多查询时候 无法满足 因此需要在"1"的一方添加"多"的一方的的id 以便用于进行连表查询 ; 核心思想通 ...

  8. flask的orm框架(SQLAlchemy)-一对多查询以及多对多查询

    一对多,多对多是什么? 一对多.例如,班级与学生,一个班级对应多个学生,或者多个学生对应一个班级. 多对多.例如,学生与课程,可以有多个学生修同一门课,同时,一门课也有很多学生. 一对多查询 如果一个 ...

  9. sql 一对多查询

    1. 一对多查询 查询departmentinfo字典下所有部门的人员数量 select * from departmentinfo a left join (select count(*) User ...

随机推荐

  1. SpringMVC 配置多个dispatcher 及WebApplicationInitializer的使用

    SpringMVC 在配置多个dispatcher时,一般可以如下配置: <!-- spring mvc start --> <servlet> <servlet-nam ...

  2. apt 查询软件

    apt-cache search percona-server apt list percona-server-server-5.6

  3. 判断当前Selection是否为prefab

    [判断当前Selection是否为prefab] PrefabUtility.GetPrefabParent(target) == null && PrefabUtility.GetP ...

  4. 高性能Web服务器Nginx的配置与部署研究(6)核心模块之主模块的测试常用指令

    1. daemon 含义:设置是否以守护进程模式运行 语法:daemon on|off 缺省:on 示例:daemon off; 注意:生产环境(production mode)中不要使用daemon ...

  5. fastdfs 清晰简介 有用

    是什么?         FastDFS是一个轻量级分布式文件系统. 能干嘛?         对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等. 在Linux上的安装连 ...

  6. Powerdesigner逆向工程从mysql生成PDM

    大家喜欢用powerDesigner进行数据库建模.通常都是先设计出物理模型图,再转换出数据库需要的SQL语句,从而生成数据库.但“powerDesigner逆向工程”就能将数据库逆向转为物理模型图. ...

  7. Openssl gendsa命令

    一.简介 gendsa命令能够根据DSA密钥参数生成DSA密钥 二.语法 openssl gendsa [-out filename] [-passout out] [-rand file(s)] [ ...

  8. java读取properties配置文件[转]

    网上文章常见的几种读取.properties文件的方式 1.使用java.util.Properties类的load()方法 示例: InputStream in = lnew BufferedInp ...

  9. Ubuntu16.0安装Eclipse Neon

    eclipse在Ubuntu下安装先安装jdk,配置环境变量,之后下载eclipse安装包,解压,放置在目标目录,将jre链接到该目录或者将jdk下的jre目录复制到eclipse安装包目录下,双击文 ...

  10. 读取位图(bitmap)实现及其要点

    位图的格式如下: 1.文件头信息块 0000-0001 :文件标识,为字母ASCII码“BM”. 0002-0005 :文件大小. 0006-0009 :保留,每字节以“00”填写. 000A-000 ...