我需要每隔25行将一个公式设置为ColM,从M4开始。公式I设置需要每次将日期增加一天。
我以前在另一张纸上成功使用过的脚本,在我为这张新纸张改编后,它不起作用。我确信这是一件很简单的事,我已经错过了,买我的阅读障碍会让我很难看清楚。
我想设置这样的公式......
=FILTER(ZapUPDATE!T2:Z, ZapUPDATE!Q2:Q=date(2016,10,1), ZapUPDATE!R2:R="SUP") // Into M4
=FILTER(ZapUPDATE!T2:Z, ZapUPDATE!Q2:Q=date(2016,10,1)+1, ZapUPDATE!R2:R="SUP") // Into M29
=FILTER(ZapUPDATE!T2:Z, ZapUPDATE!Q2:Q=date(2016,10,1)+2, ZapUPDATE!R2:R="SUP") // Into M54
等等,每隔25行到M754。这是脚本......
function setFormulas() {
var sheet = SpreadsheetApp.getActiveSheet();
for (var k = 0; k < 775; k++) {
sheet.getRange(4 + 25*k, 13).setFormula('=FILTER(ZapUPDATE!T2:Z, ZapUPDATE!Q2:Q=date(2016,10,1)+' + k + ', ZapUPDATE!R2:R="SUP")');
}
}
表格链接如下。感谢任何帮助,谢谢。
答案 0 :(得分:0)
试试这个:
function setFormulas() {
var sheet = SpreadsheetApp.getActiveSpreadsheetSheet().getSheetByName('SUP10');
var i = 0;
for (var k = 4; k < 775; k = k + 25) {
sheet.getRange(k, 13).setFormula('=FILTER(ZapUPDATE!T2:Z, ZapUPDATE!Q2:Q=date(2016,10,1)+' + i + ', ZapUPDATE!R2:R="SUP")');
i++;
}
}
如果您执行Logger.log(SpreadsheetApp.getActiveSheet().getName())
,您会看到GAS认为另一张表格(AVL)处于活动状态 - 谁知道原因,但在您的情况下,我认为可以使用getSheetByName()
轻松解决
另一件事是迭代每个k值直到达到774非常慢(并且它在你的电子表格中创建了7k额外的行) - 它达到了时间限制但仍然没有完成循环。将循环设置更改为(var k = 4; k < 775; k = k + 25)
会使其在0.075秒内运行。
最后一件事:你不需要为你拥有的每一个函数创建一个单独的项目:)你可以将它们全部写在一个文件中,或者在项目中创建一堆新的.gs文件 - 它& #39;以这种方式工作会更方便。
希望它有所帮助。