工作中,我们可能要根据部门名称来查询该部门下的所有员工姓名(横向查询):
或者根据不同的部门来列出其各自的信息(纵向查询):
接下来,我们就来看看如何实现这操作。
(一)横向查询
1、首先,我们需要在数据表前添加一个辅助列,利用COUNTIF函数为各部门编号。
输入公式:
=COUNTIF($C$2:C2,C2)
第一个参数是计数区域$C$2:C2,我们选择包含部门信息的C列
别忘了用F4键给前面C2加个“锁”。这样你下拉公式时,计数范围就会自动变大,从C2开始,一直到你拉到的那一行,确保每个部门的人数都能数对。
第二个参数是计数条件,这里我们同样选择部门信息所在的单元格C2,
然后,在COUNTIF函数前面连接上部门信息,用&符号连接即可。
输入=C2&COUNTIF($C$2:C2,C2)
这样,相同的部门就会被编上不同的编号,形成唯一的部门名称
2、编写VLOOKUP函数的查询公式
输入=VLOOKUP(F2&G1,A2:C31,2,0)
将部门名称和部门编号的组合作为VLOOKUP函数的查找值
然后公式向右拉也要向下拉,所以得注意锁定的事儿:
(1)向右拉的时候,得确保F列被锁定,这样查找的区域才不会变;
(2)向下拉的时候呢,G1单元格里的那个“1”也得锁定,这样查找的行数范围才准确。
(3)再对查找区域:A2:C31进行绝对引用$A$2:$C$31,这样查找的区域就被锁定了。
最终公式变成:
=VLOOKUP($F2&G$1,$A$2:$C$31,2,0)
3、出现错误值
表格中出现了#N/A ,只需在VlOOKUP函数外面包上一个IFNA函数,即
=IFNA(VLOOKUP($F2&G$1,$A$2:$C$31,2,0),"")
让出现#N/A的单元格里显示空字符串 “”
(二)纵向查找
1、输入公式:
=VLOOKUP($I$1&$G4,$A$2:$D$31,COLUMN(B2),0)
(1)第一参数$I$1&$G4:组合I1(部门名)和G4(部门编号)作为查找值。
(2)第二参数$A$2:$D$31:在A2到D31这个固定区域内查找。
(3)第三参数COLUMN(B2):根据公式所在列,动态返回对应列的编号(如B列为2)
因为公式可能会向右拉,所以直接用数字指定返回值所在的列就不方便了。
而COLUMN(B2)会返回2,表示B列是第2列。
如果你把公式向右拉到C列、D列,COLUMN函数就会自动变成COLUMN(C2)、COLUMN(D2),返回3、4,这样返回值就会跟着列的变化而变化了。
(4)第四参数0:表示精确查找。
2、同样出现#NA值,只需嵌套一个IFNA函数即可:
=IFNA(VLOOKUP($I$1&$G4,$A$2:$D$31,COLUMN(B2),0),"")
3、接下来就可以通过下菜单对部门的选择,就会进行自动筛选了。
最后呢,为了让我们的表格看起来更整洁、更美观,可以把那个辅助列给藏起来。
这样一来,一个既实用又好看的数据一对多查询表就完成啦!
评论 (0)