如何对正/负值的最长连续条纹求和

时间:2019-04-25 04:39:21

标签: google-sheets-formula

在范围A1:A100中,有日期。在范围B1:B100中,有正数和负数。 1/2/2019 -5
1/3/2019 -51
1/4/2019 100
1/7/2019 27
1/8/2019 -35
1/9/2019 52
1/10/2019 26
1/11/2019 19
1/12/2019 -42
1/13/2019 -213
1/14/2019 -79

现在,我已经弄清楚了如何找到正值和负值的最长连续条纹。但是,我也想找到这些条纹的总和。理想情况下,我不想使用帮助器列。 (对于不正确的表格格式,我深表歉意。)

我找到了一个可以在Excel中使用的解决方案,但由于某种原因在Google表格中无法使用,请点击此处:https://www.mrexcel.com/forum/excel-questions/330468-sum-longest-streak.html复制到Google表格时提供的公式会导致错误,指出该小型商品没有有效的输入()功能。我已经将Excel和Google Sheets进行了比较,该公式在Excel中是成功的,但在Sheets中不是。

正条纹:ArrayFormula(MAX(FREQUENCY(IF(ISNUMBER(B:B),IF(B:B> = 0,ROW(B:B)))),IF(B:B <0,ROW(B :B)))))

负条纹: ArrayFormula(MAX(FREQUENCY(IF(B1:B99 <0,A1:A99),IF(B1:B99> = 0,A1:A99))))

最长的条纹可能超过1个。如果可能的话,我想退还最大的一笔。

正条纹总和应为97,负条纹应为-334。

1 个答案:

答案 0 :(得分:0)

您喜欢的Excel解决方案似乎使用了辅助列,因此,在C2中插入新的第1行:

=if(and($B2>0,sign($B1)=sign($B2)),C1+1,1)

复制到D2,在那里将>更改为<,然后向下复制C2:D2以适合。然后:

=sum(offset(indirect("C"&match(max(C:C),C:C,0)),1-max(C:C),-1,max(C:C),1))

并复制到右侧。

这适用于您的样本,但是找不到等长条纹的最高/最低总和。

相关问题