我想做 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 的值完全一样时,才会返回结果。这几乎是所有情况下您都应该使用的选项。
方法二:使用 INDEX 和 MATCH 组合 (更灵活)
这个组合比 VLOOKUP 更强大,因为它没有"查找列必须是第一列"的限制,而且效率更高。
公式结构: =INDEX(要返回值的列, MATCH(要查找的值, 要查找的列, 0))
具体操作: 在 B2 单元格中输入以下公式:
Excel
=INDEX(K:K, MATCH(A2, J:J, 0))
公式解释: 这个公式分两步工作:
-
MATCH(A2, J:J, 0): 这部分先执行。它会在 J 列中精确查找 A2 的值,并返回匹配项所在的 行号 。0代表精确匹配。 -
INDEX(K:K, ...):INDEX函数会根据MATCH返回的行号,去 K 列中找到并返回对应行的那个单元格的值。
如果您想返回 L 列的值,只需将 K:K 改为 L:L 即可,非常直观。
方法三:使用 XLOOKUP 函数 (最新、最推荐)
如果您使用的是 Microsoft 365 或 Excel 2021 及更高版本,强烈推荐使用 XLOOKUP。它整合了 VLOOKUP 和 INDEX/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 会保持不变。