只是想知道是否有人可以给我一些关于用二维数组(内存)替换/覆盖电子表格上的列的更直接方法的指示。
目前,下面的代码通过“for”循环逐行向下滚动将值写入单元格。这很好,但现在工作表已经超过 7k 行,这个脚本已经接近执行时间限制。
将整个工作表保存到内存阵列和计算的过程花费了很少的时间,它是 for 循环逐个单元格地调用工作表,这似乎需要永远。
必须有一种更直接的方法来替换整个列,而不是逐个单元格地向下滚动以更新值。
任何指针将不胜感激,请原谅我的无知,我只是对脚本非常陌生。
问候米
function UnitPrice() {
var range = Stocklist.getRange(1, 1, LastRow, LastColumn).getValues();
for (var i=1; i < (LastRow); i++){
var PurposeArray = range[i][PurposeCol-1];
var ListedArray = range[i][ListedCol-1];
var QtyArray = range[i][QtyCol-1];
var CostArray = range[i][Cost$Col-1];
var Unit$Array = range[i][Unit$Col-1];
var PremiumArray = range[i][PremiumCol-1];
if (QtyArray!="0" && QtyArray!=""){
range[i][Unit$Col-1] = CostArray*(1+PremiumArray)/QtyArray;
} else{
range[i][Unit$Col-1] = "";
}
if (ListedArray!=""&&PurposeArray=="" ){
range[i][PurposeCol-1] = "Stock";
}
}
//update spreadsheet's column "Unit$Col" with values from column 25 of 'range' array.
for (var j=1; j < LastRow; j++){
Stocklist.getRange(j+1, Unit$Col).setValue(range[j][Unit$Col-1]);
Stocklist.getRange(j+1, PurposeCol).setValue(range[j][PurposeCol-1]);
}
}