使用ARRAYFORMULA和INDIRECT迭代行并作为块返回

时间:2013-12-17 03:44:13

标签: google-sheets gs-vlookup

Sheet1包含A到D列,其中A包含唯一的记录键。

在Sheet2上我想根据自己的排序顺序重新排列数据。 Colum A包含我自己的自定义排序记录键。

我现在在Sheet2上所做的是;我正在计算B栏中的记录位置

=ARRAYFORMULA(MATCH(A1:A100,Sheet!A:A,0))

我一直在尝试使用ARRAYFORMULA INDIRECT一次性获取数据。 我可以使用

正确地获得一行
=ARRAYFORMULA(INDIRECT(("Sheet1!B"&B1&":D"&B1)))

我想要的是下面的内容,但它仍然只返回第一行。

=ARRAYFORMULA(INDIRECT(("Sheet1!B"&B1:B100&":D"&B1:B100)))

帮助。

1 个答案:

答案 0 :(得分:12)

不幸的是,INDIRECT不支持对数组进行迭代。

幸运的是,VLOOKUP可以,也意味着您不需要帮助列。所以:

=ArrayFormula(VLOOKUP(A1:A100,Sheet1!A:D,{2,3,4}*SIGN(ROW(A1:A100)),0))

并且在new version of Sheets中,第三个参数可以简化:

=ArrayFormula(VLOOKUP(A1:A100,Sheet1!A:D,{2,3,4},0))