你好,我是刘卓。欢迎来到我的公号,excel函数解析。在工作和学习中,我们经常需要根据一个条件,来查询出满足该条件的所有值,俗称一对多查询。
这个公式的思路是:先用if函数判断C列中的每个学历是否等于F3单元格的学历,相等的返回它所在的行号,不相等的返回false。这样就得到一个数组{FALSE;FALSE;FALSE;6;FALSE;FALSE;9;FALSE;FALSE;12;FALSE;FALSE}。 然后用small函数从小到大依次提取出每个行号,再用index函数返回A列中相应行号的内容。 当small函数把所有的行号都提取出来后,公式再向下拖动的时候会产生错误值,用index返回相应内容的时候还是错误值,所以要用iferror来处理下错误值。
这个公式和第1个公式的区别在于:当C列的学历不等于F3的学历时,返回一个较大的数字4^8,也就是65536。 这样用small提取行号的时候,还是从小到大依次提取,当所有符合条件的行号被提取完时,公式再下拉时,就会返回65536。 用index返回A列的第65536行的内容时,一般是空单元格,此时会返回0。为了把0不显示,公式后面需要连接空文本“”。 所以这个公式返回的结果是文本,如果你要查询的值是数字或日期时,就会变成文本型的数字。这点是需要注意的。 变形2:思路差不多,公式就不解释了。 -02- 大神的套路都是不用按三键,直接下拉填充。
ROW($3:$14)/(C$3:C$14=F$3)这部分返回的结果为{#DIV/0!;#DIV/0!;#DIV/0!;6;#DIV/0!;#DIV/0!;9;#DIV/0!;#DIV/0!;12;#DIV/0!;#DIV/0!}。意思就是当C列的学历等于F3的学历时,返回相应的行号,不等于F3的学历时返回错误值。 套路2:mode.mult
套路3:lookup+多维引用
套路4:lookup+frequency+多维引用 在M3单元格输入下面的公式,向下填充。此公式的详细用法之前的文章也分享过,点击《一对多查询竟然有这么多方法,惊呆我了!》复习回顾。
输入下面的公式,向下填充。其实就是在变形2的基础上加了个mmult,实现了不用按三键的效果。
今天的分享就到这里,希望对你有所帮助。从今天的分享中,可以看出有一些函数是支持数组运算的,不用按ctrl+shift+enter三键。比如,aggregate,mode.mult,lookup,frequency,mmult,还有sumproduct。 https://pan.baidu.com/s/1-bhHu6AAVHu3GIdHxLCEfw |
|