哈喽,大家好~ 在日常工作中,会涉及到如下一些操作: 如何在报销流水账中查到某人的所有报销项目和报销金额? 如何从考勤表中查某个员工在某月的迟到情况,包括迟到日期、迟到时长等等。 大家是不是一下就悟了,不就是一对多查找,用FILTER函数啊! FILTER函数是专门用来筛选数据的,有两个参数,参数1表示需要筛选出的数据区域,本例中是$C$2:$D$40,参数2表示要按什么条件筛选,本例中是$B$2:$B$40=F2,所以公式的意思就是筛选出B列中姓名与F2相同的报销金额和报销说明。 但是这种方法有个弊端,一次只能得到一个姓名的数据,例如要想实现一次匹配多个姓名的时候,就不行了。 今天就来教大家两种方法。 第一种,将查到的结果在单元格中同行显示。 输入公式: =TEXTJOIN(";",,IF($B$2:$B$40=F2,$D$2:$D$40&":"&$C$2:$C$40,"")) TEXTJOIN是一个合并函数,可以将指定的数据进行合并,并且添加指定的符号进行分隔。 函数有三个参数,第一参数的作用是用来分隔合并内容的符号,本例是用分号进行分隔。第二参数是一个逻辑值,表示是否忽略空白单元格(或空值),省略时表示忽略空值。第三参数最重要了,表示要合并的单元格是哪些,本例中结合IF函数实现了按条件指定要合并的内容。 公式中的IF($B$2:$B$40=F2,$D$2:$D$40&":"&$C$2:$C$40,"")首先判断$B$2:$B$40=F2是否成立,当条件成立时,也就是与指定的姓名相同时,返回$D$2:$D$40&":"&$C$2:$C$40,也就是“报销说明:报销金额”,当条件不成立时返回空值。 因为省略了第二参数,所以忽略空值,最后实现的效果就是当A列姓名与F2相同时,对报销说明、报销金额等数据进行合并,并且以分号隔开多个值。 第二种,将查询结果在单元格中分行显示。 输入公式: =TEXTJOIN(CHAR(10),,IF($B$2:$B$40=F2,$D$2:$D$40&":"&$C$2:$C$40,"")) 这种结果看起来更加直观。 与第一种的不同之处在于TEXTJOIN第一参数使用了CHAR(10)作为分隔符。 CHAR函数的作用是返回由代码数字指定的字符,10这个数字对应的是换行符。 需要说明的一点是,如果在公式中使用换行符,必须启用自动换行模式才能看到效果。 以上就是今天的两个实用公式啦。 有的小伙伴可能已经发现了,虽然看起来这是一个查询,但实际是按条件合并单元格数据,所以没有用Vlookup等查询函数,而用的是Textjoin数据合并函数。 你学会了吗? |
|