循环的目标是使用单元格引用递增 1 的公式填充 A、B、C、D 和 E 5 列中 797 行的每个单元格。
例如,A 列第 6 行将具有公式“=indirect("'Data Repository'!A3++")”
B 列第 6 行将有公式 "=indirect("'Data Repository'!B3++")"
但是,当我运行该函数时会发生什么,它只填充 A 列。我检查了执行记录,并且在填充第一列后记录了执行成功。我尝试了各种变体都无济于事。
以下是我测试过的最后一个变体:
function indirect(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Fleet - Weekly V3");
var formulaArray = [];
var columns = ["A","B","C","D","E"];
var row = 2;
var text = '=indirect(\"\'Data Repository\'!';
var headerRow = 6;
var column;
for(i = 0; i < 5; i++) {
column = parseInt(i) + 1;
formula = text + columns[i];
for(i = 0; i < 797; i++) {
row += 1;
if (formulaArray.length == 797) {
sheet.getRange(headerRow, column).offset(0, 0, formulaArray.length).setValues(formulaArray);
} else {
formulaArray.push([formula + row + '")']);
}
Logger.log(formulaArray.length);
}
Logger.log(i)
formulaArray = [];
}
}
这就是您可能会出错的地方 - 您需要创建变量 i(var i = 0 而不仅仅是 i = 0),如果您正在嵌套循环,则需要增加不同的变量(第一个循环使用 i,然后用 j 嵌套,然后根据需要用 k 等嵌套)
for(var i = 0; i < 5; i++) {
column = parseInt(i) + 1;
formula = text + columns[i];
for(var j = 0; j < 797; j++) {
未经测试,但我相信如果你只是替换它应该可以工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句