全!我试图在我的Google工作表中添加一个动态工作表名,这样我就不必为我创建的每个工作表编辑所有这些公式了。我认为间接()是最好的,但现在我遇到了一个问题,当我将公式拉到列中的其他单元格时,公式中的单元格正在更新。
我目前正在使用:
=IF(indirect($J$1&"!$G9")=0,indirect($J$1&"!$C9"),0)这很好,但是当我将公式向下拖动时,它不会更新$G9和$C9单元格引用,这将迫使我减少数百个单元格并手动编辑它们。我相信有更好的方法去做这件事,但我不确定。
而且,J1保存着工作表的名称。在本例中,使用以下公式进行J1=January:
function sheetName() {
return SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
}J1公式就是简单的=sheetName()公式。不确定这有什么关系,但以防万一.
发布于 2016-12-01 20:19:41
你可以把
=IF(indirect($A$2&"!"&address(row(G3),column(G3)))>0,indirect($A$2&"!"&address(row(H3),column(H3))),0)所以当你把G3和H3拉下来的时候,它们会变成G4和H4等。
你可能是想把>放在第一个间接的后面,否则你总是得到零?如果不只是将其改为=。

发布于 2016-12-01 20:26:58
通过将单元格引用放置在quates中,它现在可以在引号中查找任何引用。在query()函数中,这是一个特别明显的问题。同样,如果在工作表中插入行或列,则公式将不会更新引号中的范围引用。因此,将此更改为:
=IF(indirect($J$1&"!"&cell("address",G9))=0,indirect($J$1&"!"&cell("address",G9)),0)希望这能帮上忙!
至于ARRAYFORMULA()要停止将其复制到行中,您必须将公式更改为可能是VLOOKUP()函数,因为间接()不允许使用数组。
发布于 2016-12-03 11:57:09
实际上,您可以通过间接公式和正确使用address来动态地做到这一点:
=arrayformula(IF(indirect($J$1&"!"&address(row(),7,4)&":"&address(10,7,4))=0,indirect($J$1&"!"&address(row(),3,4)&":"&address(10,3,4)),0))
请注意,我把一个10仅仅作为一个目的,您应该用您认为有多少行来替换它。

https://stackoverflow.com/questions/40916174
复制相似问题