Excel中三种数据匹配方法

我想做 excel 的匹配, 如果A2 的内容是 J 列中的一行的具体的一个值相等, 那么久去 J 列那一行后面的对应的值.

现在的需求是获取对应 account_id 的名字.

当然了真实的需求是几百个...不然就不需要自动化了.

这个问题是 Excel 中非常常见的数据查找和匹配需求。您可以使用几个不同的函数来实现,其中最常用的是 VLOOKUP,更灵活的是 INDEX + MATCH 组合,而最新版本的 Excel 则推荐使用 XLOOKUP

下面我将为您详细介绍这三种方法。

假设您的数据结构如下:

  • 您想在 A2 单元格输入一个值。

  • 您想在 J 列中查找这个值。

  • 如果找到了,您想返回同一行 K 列(或其他列)的值。

  • 您想把公式写在比如 B2 单元格里,来显示匹配到的结果。


方法一:使用 VLOOKUP 函数 (最经典)

VLOOKUP 是专门为垂直查找设计的函数。它的意思是"Vertical Lookup"(垂直查找)。

公式结构: =VLOOKUP(要查找的值, 查找范围, 返回范围中的第几列, 是否精确匹配)

具体操作:B2 单元格中输入以下公式:

Excel

复制代码
=VLOOKUP(A2, J:K, 2, FALSE)

公式解释:

  • A2: 这是您要查找的值。

  • J:K: 这是查找的范围。非常重要VLOOKUP 要求查找的列(这里是 J 列)必须是这个范围的 第一列 。这个范围需要包含您想返回的 K 列。如果您想返回 L 列的值,范围就需要是 J:L

  • 2: 这表示您想返回查找范围中的第二列的值。因为我们的范围是 J:K,J 是第 1 列,K 是第 2 列。如果您想返回 L 列的值(范围设置为 J:L),这里就要写 3

  • FALSE: 这代表进行 精确匹配。也就是说,只有 J 列的值和 A2 的值完全一样时,才会返回结果。这几乎是所有情况下您都应该使用的选项。


方法二:使用 INDEXMATCH 组合 (更灵活)

这个组合比 VLOOKUP 更强大,因为它没有"查找列必须是第一列"的限制,而且效率更高。

公式结构: =INDEX(要返回值的列, MATCH(要查找的值, 要查找的列, 0))

具体操作:B2 单元格中输入以下公式:

Excel

复制代码
=INDEX(K:K, MATCH(A2, J:J, 0))

公式解释: 这个公式分两步工作:

  1. MATCH(A2, J:J, 0): 这部分先执行。它会在 J 列中精确查找 A2 的值,并返回匹配项所在的 行号0 代表精确匹配。

  2. INDEX(K:K, ...): INDEX 函数会根据 MATCH 返回的行号,去 K 列中找到并返回对应行的那个单元格的值。

如果您想返回 L 列的值,只需将 K:K 改为 L:L 即可,非常直观。


方法三:使用 XLOOKUP 函数 (最新、最推荐)

如果您使用的是 Microsoft 365 或 Excel 2021 及更高版本,强烈推荐使用 XLOOKUP。它整合了 VLOOKUPINDEX/MATCH 的优点,语法更简单。

公式结构: =XLOOKUP(要查找的值, 查找的列, 要返回的列)

具体操作:B2 单元格中输入以下公式:

Excel

复制代码
=XLOOKUP(A2, J:J, K:K)

公式解释:

  • A2: 要查找的值。

  • J:J: 在哪一列查找。

  • K:K: 找到后,从哪一列返回相应的值。

XLOOKUP 默认就是精确匹配,语法非常清晰。


常见问题与优化

1. 如何处理找不到的情况? 如果 J 列中没有 A2 的值,上面的公式会返回 #N/A 错误。为了让表格更美观,您可以用 IFERROR 函数来处理这个错误。

  • 对于 VLOOKUP:

    Excel

    复制代码
    =IFERROR(VLOOKUP(A2, J:K, 2, FALSE), "未找到")
  • 对于 INDEX/MATCH:

    Excel

    复制代码
    =IFERROR(INDEX(K:K, MATCH(A2, J:J, 0)), "未找到")
  • XLOOKUP 自带错误处理功能,更简单:

    Excel

    复制代码
    =XLOOKUP(A2, J:J, K:K, "未找到")

    您可以将 "未找到" 替换成空字符串 "" 让单元格留空。

2. 向下拖动公式 如果您想将这个公式应用到 A3, A4, A5...,需要确保查找范围是固定的。这时需要使用绝对引用 $

  • VLOOKUP: =VLOOKUP(A2, $J:$K, 2, FALSE)

  • INDEX/MATCH: =INDEX($K:$K, MATCH(A2, $J:$J, 0))

  • XLOOKUP: =XLOOKUP(A2, $J:$J, $K:$K)

这样,当您向下拖动填充柄时,A2 会变成 A3, A4...,但查找范围 $J:$J$K:$K 会保持不变。

相关推荐
开开心心就好3 小时前
图片批量压缩工具:支持有损无损两种模式
java·游戏·pdf·excel·散列表·启发式算法·1024程序员节
aloha_7894 小时前
Linux常用增删改查命令
linux·运维·excel
wtsolutions4 小时前
JSON转Excel工具新增WPS插件功能,将JSON转换成WPS表格工作表数据
json·excel·wps·插件·转换·加载项·wtsolutions
heartbeat..4 小时前
介绍java中常用于处理 Excel 文件的Apache POI
java·apache·excel·poi
八饱粥4 小时前
excel数据导入mysql数据库
数据库·mysql·excel
꧁坚持很酷꧂4 小时前
Ubuntu系统下通过第三方库QtXlsx输出Excel(图文详解)
ubuntu·excel
祝威廉4 小时前
InfiniSynapse: 把PDF里的表格和Excel/业务数据联合分析
pdf·excel
承缘丶4 小时前
Excel字段清单转各类数据库建表语句的工具(开箱即用)
数据库·excel·excel转数据库建表语句
Evan芙1 天前
用fping编写脚本扫描10.0.0.0/24网段在线主机
linux·运维·网络·excel