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 会保持不变。

相关推荐
彭于晏Yan3 小时前
excel导入导出
spring boot·excel
lbb 小魔仙5 小时前
Python 读取 Excel 文件:openpyxl 与 pandas 实战对比
python·excel·pandas
徐赛俊6 小时前
# Excel 图表自动变色教程(基于控制单元格)
excel
2501_930707786 小时前
如何使用C#代码将 Excel 中的图表转换为图片
excel
娃乐呵1 天前
免费的大批量Excel文档大模型处理数据工具
语言模型·大模型·excel·数据处理
Eiceblue1 天前
使用 Python 写入多类型数据至 Excel 文件
开发语言·python·excel
蹦蹦跳跳垂耳兔1 天前
Excel创建组妙用隐藏
excel
开开心心_Every1 天前
无广告干扰:简单好用文字LOGO设计工具
xml·java·网络·数据库·华为od·华为云·excel
CodeCraft Studio2 天前
Excel处理控件Aspose.Cells教程:使用C#在Excel中创建气泡图
信息可视化·c#·excel·aspose·excel api库·excel气泡图·excel组件库
CodeCraft Studio2 天前
国产化Excel开发组件Spire.XLS教程:使用Python批量删除Excel分页符
开发语言·python·excel·python开发·spire.xls·excel api库·excel开发组件