我如何在 google sheet 运行 中对上面所有先前的单元格创建一个函数,直到上一个函数

How can I make a function in google sheet run on all the previous cells above until the previous function

我想在 google sheet 中创建一个函数,例如这里的“sum” 我希望它对上面的所有单元格求和,直到上一个另一个函数 因此,如果我将它复制到另一行,它将对上面的所有单元格求和,直到上一个函数也(图片的 3)。

您可以通过像

这样的单个公式来计算累计
={"sum";arrayformula(SUMIF(ROW(A2:A),"<="&ROW(A2:A),F2:F))}

试试这些自定义函数

// mike steelson
function sumSinceLastFormula(rng){
  var lastRow = SpreadsheetApp.getActiveRange().getRow()-1
  var col = SpreadsheetApp.getActiveRange().getColumn()
  var sum=0
  for (var i = lastRow; i>1; i--){
    var value = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(i,col).getFormula()
    if (value && value.toString().charAt(0) === '=') {break}
    else {sum += SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(i,col).getValue()}
  }
  return sum
}
function countaSinceLastFormula(rng){
  var lastRow = SpreadsheetApp.getActiveRange().getRow()-1
  var col = SpreadsheetApp.getActiveRange().getColumn()
  var counta=0
  for (var i = lastRow; i>1; i--){
    var value = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(i,col).getFormula()
    if (value && value.toString().charAt(0) === '=') {break}
    else {counta++}
  }
  return counta
}
function countifSinceLastFormula(rng,crit){
  var lastRow = SpreadsheetApp.getActiveRange().getRow()-1
  var col = SpreadsheetApp.getActiveRange().getColumn()
  var countif=0
  for (var i = lastRow; i>1; i--){
    var value = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(i,col).getFormula()
    if (value && value.toString().charAt(0) === '=') {break}
    else {if (SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(i,col).getValue()==crit) {countif++} }
  }
  return countif
}

要自动更新值,请添加对先前单元格的引用

=sumSinceLastFormula(F:F8)

在F9的时候,复制到你需要的地方。

https://docs.google.com/spreadsheets/d/1iXDbYDd_5rmHa1E41zobTWB6MKvABR1ERpCgcValIng/copy