举个工作中的实例:
左边的原始表格是部门,工号,姓名,及工资数据
右边需要根据部门条件,把所有员工姓名给提取出来
因为一个部门会有多名员工能匹配到,遇到这种一对多查询匹配问题
今天介绍4种方法快速解决,前2种方法不限版本,后2种方法需要新版公式支持
1、使用VLOOKUP+辅助列首先,需要在数据源的最左侧,插入一个辅助列
输入的公式是:
=COUNTIFS($B$2:B2,B2)&B2
注意第一个B2需要按F4键,固定引用
通过累计区间计数公式,把部门列,根据出现的次数,分别添加了一个顺序号在最左边
然后我们匹配的时候,只需要输入公式:
=IFERROR(VLOOKUP(COLUMN(A1)&$G2,$A:$D,4,0),"")
VLOOKUP的4个参数解读
G2单元格固定列标
A:D列数据固定
查找第4列的结果
0表示精确查找
再结合IFERROR,出错的时候,返回空白值,就可以一次性的匹配出来了
2、万金油INDEX+SMALL+IF公式:如果不允许插入辅助列的情况下,可以使用万金油公式:
=INDEX($C:$C,SMALL(IF($A$2:$A$30=$F2,ROW($2:$30),10000),COLUMN(A1)))&""
看起来公式复杂
它的逻辑很简单:
首先使用IF判断A列是否等于我们需要查找的值,如果是,返回对应行号,否则返回一个特别大的数字
再使用SMALL将行号从小到大提取出来
使用INDEX获取对应行号的结果
3、TOROW+FILTER公式需要升级到最新版本,低版本不支持这个函数公式
它的用法很简单,我们只需要输入的公式是:
=TOROW(FILTER(C:C,A:A=F2))
FILTER公式用来筛选C列结果,条件是A列里面是F2的值
TOROW公式是将竖向排列的数据,转成横向展示
就可以轻松得到了结果
4、TOROW+IF公式我们使用的公式是:
=TOROW(IF(A:A=F2,C:C,小h),3)
也可以轻松得到结果
计算过程如下,首先是IF公式
=IF(A:A=F2,C:C,小h)
如果A列的值,是我们需要查找的市场部,就返回C列的结果,否则就计算小h
因为Excel里面并没有小h这个公式,所以会显示错误值#NAME?
所以这里小h可以换成任意非公式文本,甚至可以写成你的名字
TOROW是可以将竖向数据转换成横向的,第2参数,输入的是数字3,表示忽略错误值进行计算,所以可以得到我们想要的结果
关于这个小技巧,你学会了么?动手试试吧!