You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Sheets中用ARRAYFORMULA和VLOOKUP模拟MATCH功能?

批量实现Google Sheets中查找值位置(无需下拉填充)

方法1:ARRAYFORMULA + MATCH(最直接的方案)

不需要依赖VLOOKUP,直接用ARRAYFORMULA配合MATCH就能批量返回多个查找值的位置。

假设:

  • 待查找的数值/文本在A2:A列
  • 目标查找区域是D2:D10

在结果列的首行(比如B2)输入以下公式:

=ARRAYFORMULA(IF(A2:A="",,MATCH(A2:A,D2:D10,0)))
  • IF(A2:A="",, ...):避免空行返回错误结果,保持表格整洁
  • MATCH(A2:A,D2:D10,0):A2:A作为数组参数,配合ARRAYFORMULA自动遍历每一行,返回对应值在D2:D10中的相对位置(从1开始计数)

如果需要处理查找不到的情况,用IFERROR包裹返回自定义提示:

=ARRAYFORMULA(IF(A2:A="",,IFERROR(MATCH(A2:A,D2:D10,0),"未找到")))

方法2:ARRAYFORMULA + VLOOKUP(适用于关联其他数据的场景)

如果需要同时匹配值并返回关联的位置信息,可以用VLOOKUP构建虚拟数组来实现。

比如要查找A2:A的值在D2:D10中的位置,同时返回该位置:

=ARRAYFORMULA(IF(A2:A="",,VLOOKUP(A2:A,{D2:D10,ROW(D2:D10)-ROW(D2)+1},2,FALSE)))
  • {D2:D10,ROW(D2:D10)-ROW(D2)+1}:构建虚拟数组,第一列是目标查找值,第二列是对应的相对位置(通过ROW函数计算从1开始的序号)
  • VLOOKUP匹配后返回虚拟数组的第二列,即对应位置

如果目标区域已经有预先设置的位置列(比如E2:E10是D2:D10的位置序号),公式可以简化为:

=ARRAYFORMULA(IF(A2:A="",,VLOOKUP(A2:A,D2:E10,2,FALSE)))

注意事项

  • 尽量使用精确的数据范围(比如D2:D10而非D:D),避免整列引用拖慢表格性能
  • 如果目标查找区域是固定不变的,可以添加绝对引用符号($D$2:$D$10),防止公式移位时引用范围出错

内容的提问来源于stack exchange,提问作者Victor Enrich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 20:15:14