⼀对多、多对多查询,最简单的⽅法请拿好
⼩伙伴们好啊,前⼏天给⼤家分享了⼀期关于数据查询的经典数组公式⼀对多、多对多查询经典公式
。
今天⽼祝和就和⼤家分享⼀组特别简单的⽅法,也能实现⼀对多、多对多的数据查询需要。
先看数据,是⼀份各部门的员⼯信息表:
咱们⾸先要完成的是:
⼀对多查询
⼀对多查询,就是符合条件的有多个结果。本例中,咱们要根据G2单元格指定的部门,提取出所有财务部的⼈员信息。
步骤1
在D2单元格输⼊以下公式,向下拖动复制公式:
=(A2=G$2)+D1标签和文本框都有caption属性
linux复制文件并修改文件名(A2=G$2)部分,⽤A列的部门与G2单元格指定的部门进⾏对⽐,如果相同,返回逻辑值TRUE,否则返回逻辑值FALSE。
然后将逻辑值与前⼀个单元格中的数值相加。
在四则运算中,TRUE的作⽤相当于1,FALSE的作⽤相当于0。也就是如果部门条件符合了,D列的数值就增加1,否则还等于前⼀个数值。
注意观察,1、2、3、4……这些序号⾸次出现的⾏,就是符合条件的记录。
步骤2
函数iferror的使用方法F6单元格输⼊以下公式,向下向右拖动:
=IFERROR(INDEX(A:A,MATCH(ROW(A1),$D:$D,0)),"")
先说说ROW(A1)部分:
ROW函数的作⽤是返回参数的⾏号,ROW(A1)结果就是A1的⾏号1。当公式向下复制时,ROW(A1)会依次变成ROW(A2)、ROW(A3)……,最终得到递增的序号1、2、3……,结果⽤作MATCH函数的查值。
再看MATCH(ROW(A1),$D:$D,0)部分。
el表达式循环listMATCH函数的作⽤是查询指定内容在⼀⾏或⼀列中⾸次出现的位置。这⾥要查询的内容是ROW(A1)的结果(也就是数值1)在D列⾸次出现的位置,查询结果为2。
公式向下复制时,会依次查询1、2、3……在D列⾸次出现的位置。
得到位置信息了,接下来再使⽤INDEX函数在A列返回对应位置的内容:
INDEX(A:A,MATCH(ROW(A1),$D:$D,0))
当公式⼀直向下复制时,增加的序号在D列不到了,公式会返回错误值,所以在最外层加上IFERROR函数,将错误值转换为空⽂本""。
接下来咱们再看看如何实现:
多对多查询,就是根据多个条件返回多个指定条件的内容。接下来要根据G2单元格指定的部门和G3单元格指定的性别,提取出所有财务部的⼥性⼈员信息。
咱们只要简单修改⼀下D2单元格的公式就可以了,F列的原有的公式不⽤管它:什么叫做递归函数
php随机生成10个数字
=(A2=G$2)*(C2=G$3)+D1
看出门道了吗?多个条件同时符合,就是条件1*条件2。
多个条件符合其⼀
现在更进⼀步,要根据G2和G3单元格指定的部门,提取出两个部门的所有记录。
同样,只要简单修改⼀下D2单元格的公式就可以了,F列的原有的公式不⽤管它:
=(A2=G$2)+(A2=G$3)+D1
看出门道了吗?多个条件符合其⼀,就是条件1+条件2。
多个条件混合
现在再深⼊⼀步,要根据G1~G3单元格指定的条件,提取出财务部⼥性的记录以及安监部的所有记录。
仍然只要简单修改⼀下D2单元格的公式就可以了,F列的原有的公式不⽤管它:
=(A2=G$1)*(C2=G$2)+(A2=G$3)+D1
看出门道了吗?要同时符合的多组条件就⽤乘法,对符合其⼀的条件就⽤加法。
好了,今天的分享就是这些吧,最后留给⼤家⼀个⼩问题:如果要提取财务部⼥性和销售部⼥性的所有记录,D2单元格的公式要如何修改呢?
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论