查找匹配字段并返回对应值 (Excel 篇)

如题所述

假设我们有一个数据比较齐全的基础数据表(这里不妨称为 “索引库”),作为日常检索用。如下图所示:

现在接收到一张新的数据表(这里称为 “查询库”),如下图所示:

因为判断 “是否存在” 需要将查找函数作为基础函数,所以我们先尝试查询 “性别” 字段,并返回对应值,公式为:
=VLOOKUP($A2,索引库!$A:$E,2,FALSE)

结果返回的是 N/A,回头检查公式,没有大的问题!填充序列后,发现有既有正常的返回值,也有 N/A 值:

肉身侦查 “索引库”,发现报错的两行中,它们的主键值 “肖二” 和 ”赵六“ 恰好不在 ”索引库“。于是我们需要事先判断 ”查询库“ 中的主键值在 ”索引库“ 中是否存在。

既然当主键值不存在时,VLOOKUP 将返回 N/A 值,那么 ISERROR 函数可以将 N/A 值转换为布尔值,这样就变成了我们所需的布尔运算,用 IF 函数来判断 “是” 还是 “否”,公式为:
=IF(ISERROR(VLOOKUP(A2,索引库!$A:$E,1,FALSE)),"否","是")

我们的改造目标是,预先判断主键值是否存在,若存在,则用 VLOOKUP 返回对应值;若不存在,则为空。在上述公式的基础上稍加改动,就有了这个公式:
=IF(ISERROR(VLOOKUP($A2,索引库!$A:$E,1,FALSE)),"",VLOOKUP($A2,索引库!$A:$E,3,FALSE))

当前公式中 VLOOKUP 函数的第三个参数是一个常量,难以实现横向自动填充的效果。如下图所示:

这里,我们用 COLUMN 函数来实现返回值列标的参数化。由于 “查询库” 中新增了 ”婚姻“ 和 ”是否存在“ 字段,导致 “查询库” 中 “性别” 等字段的列标比 ”索引库“ 中的列标大 2 。比如:

因此,应将原公式中的常量 “2” 替换成 'COLUMN() - 2',于是新的公式为
=IF(ISERROR(VLOOKUP($A2,索引库!$A:$E,1,FALSE)),"",VLOOKUP($A2,索引库!$A:$E,COLUMN()-2,FALSE))

成品见上图,外送对联一副:

本案主要涉及到 4 个函数,这里重点解析 VLOOKUP 函数。

注:下一篇文章将介绍 Python 的实现方法

温馨提示:答案为网友推荐,仅供参考
相似回答