簡體   English   中英

如何在 App 腳本中循環 Google 表格公式

[英]How To Loop Google Sheet Formula In App Script

我正在嘗試通過 Google App Script 在 Google 表格中設置公式。

這是電子表格的插圖: 在此處輸入圖像描述

我也嘗試編寫代碼,但我不知道如何循環它,因此對於添加到單元格范圍“A3:F”的每個值都會自動將其求和到總計列(G 列)。 你能告訴我如何循環嗎? 您的回復將不勝感激:)

function onEdit(e){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('Sheet1');

  var cell = s.getRange("G3");
  cell.setFormula("=SUM((A3/100)*D3)+((B3/100)*E3)+((C3/100)*F3)");
}

編輯

這是對我有用的更新代碼:

function onEdit(e){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('Sheet1');

  const cell = s.getRange(3, 7, s.getLastRow());
  cell.setFormula("=SUM((A3/100)*D3)+((B3/100)*E3)+((C3/100)*F3)");
  
}

不需要循環。 SetFormula 將自動調整到新的范圍,就像自動填充一樣:

  const cell = s.getRange(`G3:G${s.getLastRow()}`);
  cell.setFormula("=SUM((A3/100)*D3)+((B3/100)*E3)+((C3/100)*F3)");

您可以為公式創建一個“模板”,並在循環中用行號替換必要的參數。 這是一個將公式從第 3 行設置到第 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 );

您可以使用“簡單的”function 而不是腳本來執行此操作。

SUMPRODUCT 很好,但它不會向下循環。 您可以使用 ARRAYFORMULA,但您需要列出每個乘法,例如 A/100*D。

要使用 ARRAYFORMULA 向下循環,每個列范圍將采用 A3:A 等格式。

因此,您在單元格 G3 中的公式為:

=ARRAYFORMULA((A3:A/100*D3:D)+(B3:B/100*E3:E)+(C3:C/100*F3:F))

注意:行號需要與您插入主 ARRAYFORMULA 的位置相同(即示例中的 3)。 如果你弄錯了,你的工作表會在你不知不覺中生成大量的行!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM