3 回答

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊
不需要循環(huán)。SetFormula 將自動(dòng)調(diào)整到新的范圍,就像自動(dòng)填充一樣:
const cell = s.getRange(`G3:G${s.getLastRow()}`);
cell.setFormula("=SUM((A3/100)*D3)+((B3/100)*E3)+((C3/100)*F3)");

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊
您可以為公式創(chuàng)建一個(gè)“模板”,并在循環(huán)中用行號(hào)替換必要的參數(shù)。這是一個(gè)將公式從第 3 行設(shè)置到第 12 行的示例
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName( 'Sheet1' );
var firstRowNum = 3;
var lastRowNum = 12;
var formulas = [];
var formulaTemplate = '=SUM((A{rowNum}/100)*D{rowNum})+((B{rowNum}/100)*E{rowNum})+((C{rowNum}/100)*F{rowNum})';
for ( var i = firstRowNum; i <= lastRowNum; i++ ) {
formulas.push( [ formulaTemplate.replace( /{rowNum}/g, i ) ] );
}
s.getRange( 'G' + firstRowNum + ':G' + lastRowNum ).setFormulas( formulas );

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以使用“簡(jiǎn)單”函數(shù)而不是腳本來(lái)執(zhí)行此操作。
SUMPRODUCT 很好,但它不會(huì)向下循環(huán)。您可以使用 ARRAYFORMULA,但您需要列出每個(gè)乘法,例如 A/100*D。
要使用 ARRAYFORMULA 向下循環(huán),每個(gè)列范圍將采用 A3:A 等格式。
因此,您在單元格 G3 中的公式為:
=ARRAYFORMULA((A3:A/100*D3:D)+(B3:B/100*E3:E)+(C3:C/100*F3:F))
注意:行號(hào)需要與您插入主 ARRAYFORMULA 的位置相同(即示例中的 3)。如果你弄錯(cuò)了,你的工作表會(huì)在你不知不覺中生成大量的行?。?/p>
添加回答
舉報(bào)