如何将Indirect替换为Vlookup以在ArrayFormula中实现迭代
解决方案
方法一:使用INDEX函数(更简洁高效)
直接用INDEX结合ArrayFormula即可实现批量引用,公式如下:
=ArrayFormula(INDEX('Form Responses 1'!A:A, G2:G))
- 原理:
INDEX函数的第二个参数支持行号数组,G2:G提供了需要引用的目标行号,ArrayFormula会自动遍历整个G2:G区域,返回对应行的「Form Responses 1」工作表A列时间戳。
方法二:使用VLOOKUP函数
如果一定要用VLOOKUP,可以构造包含行号和目标数据的辅助数组,公式如下:
=ArrayFormula(VLOOKUP(G2:G, {ROW('Form Responses 1'!A:A), 'Form Responses 1'!A:A}, 2, FALSE))
- 原理:
{ROW('Form Responses 1'!A:A), 'Form Responses 1'!A:A}生成一个两列数组,第一列是「Form Responses 1」工作表的行号,第二列是对应的时间戳;VLOOKUP会用G2:G的行号去匹配第一列,返回第二列的对应值。
原公式失效原因
INDIRECT属于易失性函数,无法在ArrayFormula中进行数组迭代运算,因此直接批量引用会失效。
内容的提问来源于stack exchange,提问作者Shadi
相关产品推荐
相关产品推荐

