一切!我试图将动态工作表名称添加到我的 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()
。不确定是否重要,但以防万一...
答案 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等。
您可能打算将>在第一次间接之后否则你总是得到零?如果不是,只需将其更改回=。
答案 1 :(得分:0)
通过将单元格引用放在quates中,它现在在任何引用的引号内都是alooking。使用query()函数这是一个特别明显的问题。同样,如果在工作表中插入行或列,则公式不会更新引号中的范围引用。所以改成这个:
=IF(indirect($J$1&"!"&cell("address",G9))=0,indirect($J$1&"!"&cell("address",G9)),0)
希望这有帮助!
至于ARRAYFORMULA()要停止在行中复制,你必须将公式更改为VLOOKUP()函数,因为INDIRECT()不允许使用数组。