以工作中的实际情况为例:
原始表格左侧列出了部门、工号、姓名及对应的工资数据。
我们的任务是,根据部门条件,从右侧提取出所有员工的姓名。
由于一个部门可能有多名员工与之匹配,因此我们面临的是一对多的查询匹配问题。
今天,我将为大家介绍四种快速解决这一问题的办法,其中前两种方法不受版本限制,而后两种则需要新版本的公式支持。
我们需要在数据源的最左侧插入一辅助列。
插入的公式为:
=COUNTIFS(部门列的范围, 当前部门名称) & 当前部门名称
请注意,这里的部门列范围的首个引用需要使用F4键进行固定引用。
通过运用累计区间计数公式,我们能够在部门列的旁边添加一个顺序号,根据各部门出现的次数进行编号。
随后,进行匹配时,可输入以下公式:
=IFERROR(VLOOKUP(列号与G列的组合, 整个A至D列的范围, 第4列, 精确匹配), "")
关于VLOOKUP公式的四个参数的解释如下:
G2单元格为查找值的固定列标。
A至D列为数据固定范围。
查找第4列的结果。
0表示进行精确查找。
结合IFERROR函数,当出错时返回空白值,这样便可一次性完成匹配。
若因某些限制无法插入辅助列,可考虑使用通用性较强的公式:
=INDEX(C列的范围, ALL(IF(A列的范围=指定值, 行号, 一个极大数值), 列号)) & “”
虽然该公式看起来较为复杂,但其逻辑相当简单易懂。
公式首先判断A列的值是否等于我们需查找的值。若符合条件则返回对应的行号;否则返回一个极大的数字。
接着使用ALL函数将行号按从小到大的顺序提取出来。
最后利用INDEX函数获取对应行号的结果。
值得注意的是,此方法需要升级到最新版本方可使用,旧版本不支持该函数公式。
其使用方法相对简单。我们只需输入的公式为:
=TOROW(FILTER(C列, A列=指定值))
FILTER公式用于筛选C列的结果,条件是A列的值等于指定值。
TOROW公式则可将竖向数据横向展示。
通过上述步骤即可轻松获取所需结果。
我们实际使用的公式示例为:
=TOROW(IF(A列的范围=指定值, C列的范围, "小h"), 数字3)
同样可以轻松得到结果。
具体计算过程如下:首先运用IF公式判断A列的值。若与指定值相符(如市场部),则返回C列的结果;否则返回“小h”。值得注意的是,Excel中并无“小h”这一公式,因此会显示错误值NAME?。在此处,“小h”可替换为任何非公式文本内容,甚至可以是你的名字。
TOROW函数能将竖向数据转换成横向格式。其第二个参数设置为数字3,意味着忽略错误值进行计算,从而得到我们期望的结果。