【问题标题】:Using ARRAYFORMULA and INDIRECT to iterate rows and return as a block使用 ARRAYFORMULA 和 INDIRECT 迭代行并作为块返回
【发布时间】:2013-12-17 03:44:13
【问题描述】:

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

在 Sheet2 上,我想根据自己的排序顺序重新排列数据。 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)))

帮助。

【问题讨论】:

标签: google-sheets gs-vlookup


【解决方案1】:

很遗憾,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))

【讨论】:

  • 工作就像一个魅力,感谢亚当。想想看,这也可以作为“穷人的”表连接,对吧?
  • 文档中怎么没有这么有用的信息?
  • 当然,它可以用作表连接,但通常会影响性能(每次编辑都会重新计算公式),因此您可以考虑仅在公式一次更改值已经完成了它的工作。至于文档,新版本的表格有所改进,但仍有很多类似的东西需要我们“发现”。 productforums.google.com/forum/#!searchin/docs/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-21
  • 1970-01-01
  • 2017-11-26
  • 2010-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多