【问题标题】:Get value of same cell from multiple sheets从多个工作表中获取相同单元格的值
【发布时间】:2020-06-16 21:37:44
【问题描述】:

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

这是我最初尝试的:

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

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

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

我也找到了this answer,但我想既然它已经 2.5 年了,也许有人发现了一个聪明的方法来避免复制的拖累

【问题讨论】:

  • 有兴趣的有脚本(?)
  • 您是否尝试过给定的解决方案?它对你有用吗?如果不是,我们可以尝试找出原因。如果是,请记住,根据site guidelines,当答案解决您的问题时,accept 它甚至是upvote 它,这样其他人也可以从中受益。

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


【解决方案1】:

答案:

您需要使用脚本或使用拖动方法来执行此操作 - 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());
}

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

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

=ARRAYINDIRECT(A2:A)

函数概要:

  • 从调用公式的位置获取输入范围 - 在本例中为 A2:A
  • 减少输入以删除所有空单元格
  • 将存储在单元格中的工作表名称映射到它引用的工作表的A1 中的值
  • 返回一个数组输出

参考资料:

【讨论】:

    猜你喜欢
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多