繁体   English   中英

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

[英]Get value of same cell from multiple sheets

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

这是我最初尝试的:

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

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

我找到了这个答案,但不知道如何将其应用于我的情况。

我也找到了这个答案,但认为自从它 2.5 岁以来,也许有人发现了一种避免复制拖累的聪明方法。

回答:

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

更多信息:

不幸的是,对于使用ARRAYFORMULAINDIRECT的用户来说,发现一个聪明的方法并不是问题——只能用公式来做的事情是这个问题的根源。

设置自定义 function:

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

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)

function 的概要:

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

我希望这对你有帮助!

参考:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM