Google 最后一个条件单元格之后的工作表总和

Google Sheets sum after last criteria cell

找不到这方面的任何东西,我的大脑一直在寻找面向对象的解决方案,据我所知,这里无法实现。

a b
1 10
2 11
-3 10
4 11
5 13

我有一个包含以下数据的 google sheet,我想弄清楚如何获取 b 列值的总和,但仅限于最后一个已知负数之后的那些值a.

IE:公式应该给出 11 和 13 = 24 的总和,因为只有 4 和 5 是最后一个已知负数之后的正数。

试试这个:

=ARRAYFORMULA(SUM(INDIRECT("B"&MATCH(LOOKUP(9^9,IF(A1:A<0,A1:A)),A1:A,0)+1&":B")))

零碎地看这个公式:

  1. 查找范围内的最后一个负数: LOOKUP(9^9,IF(A1:A<0,A1:A))

  2. 找到它在范围内的位置加1得到下一个位置:MATCH(<formula in step 1>),A1:A,0)+1

  3. 使用间接构建求和范围。 SUM(INDIRECT("B"&<formula in step 2>&":B"))

  4. 封装在ARRAYFORMULA中获取结果。

示例:

我可以通过 Apps Scripts 创建自定义函数来解决这个问题。

功能很基础

function sumFromLastNeg(data) {
  var run_sum = 0;
  for (var i = 0; i < data.length; i++) {
    if (data[i][0] >= 0){
      run_sum += data[i][1];
    }
    else if (data[i][0] < 0){
      run_sum = 0;
    }
  }
  return run_sum;
}

函数是这样调用的=sumFromLastNeg(A1:B)

我最初的想法是我无法做到这一点,但通过寻找解决方案,我在 google 表中找到了脚本。

希望这对人们有所帮助!