对Excel表中数据一对多查询的方法

   对Excel表中数据一对多查询的方法

         举个例子,如下图,左侧A1:C10是一份学员名单表,现在需要根据F1单元格的“EH图班”这个指定的条件,在F2:F10单元格区域中,提取该班级全部学员名单。


  今天说一个函数查询方面的方法:Index+Small。

  F2单元格输入以下数组公式,按住Ctrl+Shift键不放,再按回车键,然后向下填充:

  =INDEX(B:B,SMALL(IF(A$1:A$10=F$1,ROW($1:$10),4^8),ROW(A1))),"")

  公式讲解

  IF(A$1:A$10=F$1,ROW($1:$10),4^8)

  这部分,先判断A1:A10的值是否等于F1,如果相等,则返回A列班级相对应的行号,否则返回4^8,也就是65536,一般情况下,工作表到这个位置就没有数据了。

  结果得到一个内存数组:

  {65536;2;3;65536;65536;65536;65536;8;65536;10}


  SMALL函数对IF函数的结果进行取数,随着公式的向下填充,依次提取第1、2、3……n个最小值,由此依次得到符合班级条件的行号。

  随后使用INDEX函数,以SMALL函数返回的行号作为索引值,在B列中提取出对应的姓名结果。

  当SMALL函数所得到的结果为65536时,意味着符合条件的行号已经被取之殆尽了,此时INDEX函数也随之返回B65536单元格的引用,结果是一个无意义的0,为了避免这个问题,可以在公式后面加上一个小尾巴 &""

  利用&””的方法,很巧妙的规避了无意义0值的出现,只是当查找结果为数值或日期时,这个方法会把数值转变为文本值,并不利于数据的准确呈现以及再次统计分析。

  练手题

  最后留下一道练手题,如下图,根据A1:C10区域的数据,将E列相关班级的姓名,填充到F2:I5区域。

时间: 2024-07-29 23:32:39

对Excel表中数据一对多查询的方法的相关文章

jsp-java 中JSP 实现把excel表中数据导入到mysql数据库中的表中的具体实现方法

问题描述 java 中JSP 实现把excel表中数据导入到mysql数据库中的表中的具体实现方法 java 中JSP 实现把excel表中数据导入到mysql数据库中的表中的具体实现方法 解决方案 参考:http://blog.csdn.net/casilin/article/details/5750773 解决方案二: 楼主幸苦了!!谢谢分享!!! 解决方案三: jsp导excel到mysql数据库 http://wenku.it168.com/d_000468232.shtml

Excel表中数据开头的0没有显示怎么办?

问题状态如下: 我们把文本中的数据导入到excel中时你会发现如下图所示前面的0都就消失不见了,如下图所示. 解决方案: 我们点击excel表中"数据"选项卡的"获取外部数据"-->"自文本"具体绍下图所示: 然后我们再找到要操作的文件之后点击"导入"菜单,细节如下图所示: 然后在弹出的导入向导中我们点击"分隔符号"然后我们再把"逗号"复选框,然后单击"下一步"

把Excel表中数据导入数据库

  这是第二次了,市场部那边又来要求改数据.他们要改的是数据库某张表中类似商品价格等的数据,需要改的地方又多,我们上次是靠新来的兄弟一个个给Update进去的,这次老大去教了他们Update语句,把烦人的皮球踢给他们了.但这样一个个更新很明显不是办法,我想通过excel直接把数据导入数据库应该是可行的吧,就开始找方法了 我想至少有这样两种比较容易实现的方法: 1.直接用Sql语句查询 2.先用excle中的数据生成xml文件,再把xml导入数据库 第一种方法(方法二以后再试),找到联机丛书里实现

MySQL大表中重复字段的查询效率方法

MySQL大表重复字段应该如何查询到呢?这是很多人都遇到的问题,下面就教您一个MySQL大表重复字段的查询方法,供您参考. 数据库中有个大表,需要查找其中的名字有重复的记录id,以便比较. 如果仅仅是查找数据库中name不重复的字段,很容易 SELECT min(`id`),`name`     FROM `table`     GROUP BY `name`;    但是这样并不能得到说有重复字段的id值.(只得到了最小的一个id值) 查询哪些字段是重复的也容易 SELECT `name`,c

oracle从一张表中根据不同条件查询出两个结果 然后查出两个结果中相同的数据

问题描述 oracle从一张表中根据不同条件查询出两个结果 然后查出两个结果中相同的数据 这是表中数据 我用下面这种方法 select * from ((select * from SFFX_JGJPZ_DETAIL d where d.jgjpz_id=1) o), ((select * from SFFX_JGJPZ_DETAIL d where d.jgjpz_id=8) t) where o.platename=t.platename ; 查出来的结果对的 却在一行 怎么解决.. 解决方

如何在EXCEL表中自动计算员工入职年限?

  我们经常会需要计算员工从入职的年限是多少,仅考人工去计算会是很大的工程,尤其是公司人员庞大的时候,所以我们需要能自动计算年限的方法,接下来就告诉大家如何在EXCEL表中自动计算: 方法/步骤 1.打开需要编辑的EXCEL表文件; 2.在记录年限的前面插入一列,作为当前日期的记录列,标题为"当前日期"也就是当天的日期; 在当前日期的表格内写上" =now()" ,不包括双引号,然后回车就自动显示出当天的日期了,然后复制到下面的其他表格内; 注意:这个函数的括号里不

在 SQL Server 中查询EXCEL 表中的数据遇到的各种问题

原文:在 SQL Server 中查询EXCEL 表中的数据遇到的各种问题 SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\KK.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$] 问题:消息 15281,级别 16,状态 1,第 1 行 SQL Server 阻止了对组件 'Ad Hoc Dis

教你如何把EXCEL表中的数据统一上调20%

早上刚来到办公室,服务部经理郭飞就找到我,说昨天打印的工时需要重新调整,每个单价都上调20%,因为车型种类比较多,打印需要200多页,比较浪费墨.我就问老板知道么,他说这个上调工时是经过老板同意的,既然老板同意,我也就没有任何理由不再重新打印调整好的工时. 由于我的电脑还是2000年买的,无论运行速度等其他方面都是比较慢,就用市场部刚买来的电脑,这样工作效率也许会高点,在设置表格的过程中,市场部的大琳非要问我这个上调20%是如何设置的,她要求把这个设置过程写下来,以便以后忘记了好有个查询的资料应

SQL表中数据按条件批量导出多个Excel文件

SQL Server表中数据按条件批量导出为多个Excel文件是本文我们主要要介绍的内容,在一次SQL Server数据库的操作中,需要将某个有数十万行数据的表按类别导出为xls文件,每个类别一个xls.将数据表中的数据导出并保存为xls简单,用 SSIS或者查询出来之后另存为都可以.但是,这个表中的分类有数百个,如果一个个用SSIS或者查询另存为的话,工作量巨大.前思后想,想到了用 while循环查询,并用bcp导出的方法. 下面是相关代码: --声明需要的变量 declare @sql va