以一个实际工作中的案例为引导,我们可以想象这样一个情境:我们在工作中面对着三张记录不同部门员工工资数据的工作表。
在总表中,时常需要迅速查找到特定员工的工资信息。这些员工可能分布在任何一个子工作表中。
为了高效地跨多表查找数据,有两种常用的方法。
我们可以在“杭州”表中尝试查找。我们使用的公式如下:
=VLOOKUP(A2, 杭州!A:B, 2, 0)
这个公式能够帮助我们找到一部分员工的数据,但对于未在“杭州”表现的员工,它将返回错误值。
为了解决这个问题,我们只需在公式中嵌套一个IFERROR函数。这样,当“杭州”表无法找到匹配项时,公式会自动跳转到下一个工作表进行查找。
例如,接下来的公式可能是这样的:
=IFERROR(VLOOKUP(A2, 杭州!A:B, 2, 0), VLOOKUP(A2, 南昌!A:B, 2, 0))
若此类推,若有三个工作表需要查找,我们只需继续嵌套IFERROR函数。
当子表数量众多时,上述方法便不再适用。我们需要一次性从所有子表中查找数据。
要做到这一点,首先需要从当前工作簿中提取所有子表的名称,这些名称可以放置在D2至D4的单元格中。
接着,我们使用更为复杂的公式来进行查找,其结构大致如下:
=VLOOKUP(A2, INDIRECT(LOOKUP(1, 0/COUNTIF(INDIRECT(CONCATENATE($D$2:$D$4, "&!A:A")), A2), $D$2:$D$4)&"!A:B"), 2, 0)
简单解释一下这个公式的计算原理:
通过COUNTIF函数和INDIRECT函数结合子表名与A列的数据进行比对,判断A2的值是否存在于子表的A列中。
接着,利用LOOKUP函数找到第一个匹配的子表名称。然后通过INDIRECT函数将子表名称转换为具体的数据范围。
使用VLOOKUP函数在得到的数据范围中查找第二列的数据。
掌握了这一技巧,你就可以在数据处理工作中更加得心应手。不妨试试看,你一定会有所收获。