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

时间:2020-06-16 21:37:44

标签: arrays google-sheets google-sheets-formula array-formulas

我想从工作表的多个标签中获取单元格A1的值。我尝试使用INDIRECT,只是提醒您它在ARRAYFORMULA中不起作用。是否存在某种可以做同样事情的“临时”公式?

这是我最初尝试的:

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

A列是我工作表中选项卡名称的选择列表。因此,第一个实例起作用了,但是当然,它并没有像我希望的那样填充到该列中。我意识到我可以将公式复制到列的下方,但是当我向列表中添加行时,某种类型的ARRAYFORMULA是理想的选择。

我找到了this answer,但看不到如何将其应用于我的情况。

我还发现了this answer,但是自从2.5岁以来,也许有人发现了一种巧妙的方法来避免拖动进行复制。

1 个答案:

答案 0 :(得分:0)

答案:

您需要使用脚本或使用拖动方法来执行此操作-INDIRECT使用字符串引用,因此不能与数组一起使用。

更多信息:

不幸的是,对于使用INDIRECT的{​​{1}}的用户来说,发现一个聪明的方法并不是问题-只能使用公式来解决此问题,这是问题的根源。

设置自定义功能:

从“工具”>“脚本编辑器”菜单项中,可以创建脚本。您可以使用的示例自定义公式如下:

ARRAYFORMULA

确保随后使用保存图标保存脚本。

然后,您可以在工作表中这样调用此自定义公式:

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());
}

功能简介:

  • 获取调用公式的输入范围-在这种情况下为=ARRAYINDIRECT(A2:A)
  • 减少输入以删除所有空单元格
  • 将存储在单元格中的工作表名称映射到其引用的工作表A2:A中的值
  • 返回要输出的数组

我希望这对您有帮助!

参考文献: