【问题标题】:Google sheet function into Google script function谷歌表格函数转化为谷歌脚本函数
【发布时间】:2021-09-01 09:02:25
【问题描述】:

我正在使用 Google 表格功能来分析一些数据,但即使我没有庞大的数据库,表格也会落后于我的功能。功能是:

=ARRAY_CONSTRAIN(ARRAYFORMULA(SUMIF(IF(A2:A10000="Received",ROW(A2:A10000),""), "<="&ROW(A2:A10000), B2:B10000)+G1-SUMIF(IF(A2:A10000="Given",ROW(A2:A10000),""), "<="&ROW(A2:A10000), B2:B10000)),COUNTA(B2:B10000),1)

是否可以通过谷歌脚本使用此功能,以免表单超载?

示例表:https://docs.google.com/spreadsheets/d/1UeIXFVsP5hevC20D04juTstBbfViYhWUIp6VRst_Nu4

【问题讨论】:

  • @Iamblichus 在您的答案中发现了类似的函数SUM7ROWS。你能帮忙吗?谢谢。
  • 在我看来,使用更有效地完成这项工作是可能的。您能用文字解释您的目标并提供一些示例数据吗?
  • @Krzysztof Dołęgowski 我需要使用 arrayformula 为每一行加上一些标准的总和。我的变体正在工作,但工作表速度非常慢。此处为电子表格示例docs.google.com/spreadsheets/d/…

标签: google-apps-script google-sheets google-sheets-formula array-formulas sumifs


【解决方案1】:

试试这个脚本。它在我的副本中正常工作。 目的是根据 A 列中的条件取先前的值并添加或减去新值

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getActiveSheet();
  var previous = s.getRange('G1').getValue(); //ger vaule from last month
  var valuecount = s.getLastRow()  ; // defines number of rows
  
  for (let i = 1; i < valuecount; i++) { //starts loop

   var direction = s.getRange(i+1 , 1).getValue(); 
   if (direction == 'Received') {
   previous = previous + s.getRange(i+1 , 2).getValue() ;
   }
    else 
    {previous = previous - s.getRange(i+1 , 2).getValue()  }
  s.getRange(2,4,valuecount).getCell(i,1).setValue(previous);
  }
}

【讨论】:

  • 谢谢!正是我想要的。
  • 你能在这个函数中再帮忙做一件事吗?我为此功能添加了“编辑时”触发器,如果​​我添加新数据,它的启动循环将从头开始。如果我有很多数据,这需要很长时间才能完成。可以修改这个函数,让它从最后一行开始循环,而不是从开始?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多