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

Google sheets 使用ARRAYFORMULA和INDIRECT迭代行并作为块返回,google-sheets,gs-vlookup,Google Sheets,Gs Vlookup,Sheet1有A到D列,其中A包含唯一的记录键 在表2中,我想根据自己的排序顺序重新排列数据。ColumA包含我自己定制的记录键 到目前为止,我在第二张纸上所做的是;我把B列中的记录位置计算为 =ARRAYFORMULA(MATCH(A1:A100,Sheet!A:A,0)) 我一直在尝试使用ARRAYFORMULA间接法一次性获取数据。 我可以使用 =ARRAYFORMULA(INDIRECT(("Sheet1!B"&B1&":D"&B1))) 我想要的是下面的内容

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

在表2中,我想根据自己的排序顺序重新排列数据。ColumA包含我自己定制的记录键

到目前为止,我在第二张纸上所做的是;我把B列中的记录位置计算为

=ARRAYFORMULA(MATCH(A1:A100,Sheet!A:A,0))
我一直在尝试使用ARRAYFORMULA间接法一次性获取数据。 我可以使用

=ARRAYFORMULA(INDIRECT(("Sheet1!B"&B1&":D"&B1)))
我想要的是下面的内容,但它仍然只返回第一行

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

帮助。

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

幸运的是,VLOOKUP确实如此,这也意味着您不需要helper列。因此:

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

在本文中,第三个论点可以简化:


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

非常有效,谢谢亚当。想想看,这也可以作为“穷人”的表联接来使用,对吗?为什么文档中没有这些有用的信息?当然,它可以用作表联接,但通常会影响性能(每次编辑都会重新计算公式),因此,只有当公式完成它的工作时,你才能考虑改变价值。至于文档,它随着新版本的Sheets得到了改进,但是我们仍然需要“发现”很多类似的东西。创建实验示例