公式/间接问题跨越列中的多个单元格

时间:2016-12-01 16:53:02

标签: google-sheets

一切!我试图将动态工作表名称添加到我的 Google表格中,因此我不必为我创建的每个工作表编辑所有这些公式。我认为INDIRECT()效果最好,但现在我在公式中更新了单元格的问题,因为我将公式拉到列中的其他单元格。

我目前正在使用:

=IF(indirect($J$1&"!$G9")=0,indirect($J$1&"!$C9"),0)

这可以很好地计算,但是当我拖动公式时,它不会更新$ G9和$ C9单元格引用,这将迫使我关闭数百个单元格并手动编辑它们。我确定有更好的方法可以做到这一点,但我不确定。

此外,J1持有工作表的名称。在这种情况下,J1 = 1月使用以下公式:

    function sheetName() {
  return SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
}

J1公式只是=sheetName()。不确定是否重要,但以防万一...

2 个答案:

答案 0 :(得分:0)

你可以把

=IF(indirect($A$2&"!"&address(row(G3),column(G3)))>0,indirect($A$2&"!"&address(row(H3),column(H3))),0)

这样当你把它们拉下来时,G3和H3会变成G4和H4等。

您可能打算将>在第一次间接之后否则你总是得到零?如果不是,只需将其更改回=。

enter image description here

答案 1 :(得分:0)

通过将单元格引用放在quates中,它现在在任何引用的引号内都是alooking。使用query()函数这是一个特别明显的问题。同样,如果在工作表中插入行或列,则公式不会更新引号中的范围引用。所以改成这个:

=IF(indirect($J$1&"!"&cell("address",G9))=0,indirect($J$1&"!"&cell("address",G9)),0)

希望这有帮助!

至于ARRAYFORMULA()要停止在行中复制,你必须将公式更改为VLOOKUP()函数,因为INDIRECT()不允许使用数组。