我想从工作表的多个标签中获取单元格A1的值。我尝试使用INDIRECT
,只是提醒您它在ARRAYFORMULA
中不起作用。是否存在某种可以做同样事情的“临时”公式?
这是我最初尝试的:
=ArrayFormula(IF(LEN(A2:A),INDIRECT(A2:A&"!A1"),))
A列是我工作表中选项卡名称的选择列表。因此,第一个实例起作用了,但是当然,它并没有像我希望的那样填充到该列中。我意识到我可以将公式复制到列的下方,但是当我向列表中添加行时,某种类型的ARRAYFORMULA
是理想的选择。
我找到了this answer,但看不到如何将其应用于我的情况。
我还发现了this answer,但是自从2.5岁以来,也许有人发现了一种巧妙的方法来避免拖动进行复制。
答案 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
中的值我希望这对您有帮助!