从多个工作表中获取同一单元格的值

问题描述 投票:0回答:1

我想从工作表中的多个选项卡中获取A1单元格的值。 我尝试使用 INDIRECT但却被提醒说,这在医院里是行不通的。ARRAYFORMULA. 是否有某种 "临时 "公式可以做同样的事情?

这是我最初的尝试。

 =ArrayFormula(IF(LEN(A2:A),INDIRECT(A2:A&"!A1"),))

A列是我的工作表中的标签名称的选择列表。 所以第一个实例是可行的,但当然,它并没有像我希望的那样向下填充列。 我意识到我可以直接将公式复制到列下,但某种类型的一个 ARRAYFORMULA 将是理想的,因为我在列表中添加行。

我发现 本回答但我不知道如何将其应用于我的情况。

我还发现 本回答但我想,既然它已经有2.5年的历史了,也许有人已经发现了一个聪明的方法来避免这个问题 拖拽 的复制。

arrays google-sheets google-sheets-formula array-formulas
1个回答
0
投票

答:你需要用一个脚本来做这件事。

你需要用一个脚本或者用拖拽的方法来完成这个任务 -- INDIRECT 使用字符串引用,因此不能与数组一起使用。

更多信息。

不幸的是,对于 INDIRECTARRAYFORMULA聪明的方法的发现并不是问题的关键,问题的根源在于对公式的限制。

设置一个自定义函数。

从 "工具> 脚本编辑器 "菜单项,你可以创建脚本。你可以使用的一个自定义公式的例子如下。

function ARRAYINDIRECT(input) {  
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  return input.reduce(function(array, el) {
    if (el[0]) array.push(el[0])
    return array;
  }, []).map(x => ss.getSheetByName(x).getRange("A1").getValue());
}

确保用保存图标保存脚本。

在你的Sheet中,你可以这样调用这个自定义公式。

=ARRAYINDIRECT(A2:A)

函数概述:

  • 从调用公式的地方获取输入范围,在本例中 A2:A
  • 减少输入,删除所有空单元格。
  • 将存储在单元格中的工作表名称映射到单元格中的值。A1 所引用的纸张的
  • 返回一个要输出的数组

以上就是小编为大家带来的关于 "如何看待 "的介绍,希望对大家有所帮助!

参考文献。

© www.soinside.com 2019 - 2024. All rights reserved.