【问题标题】:How to sum longest consecutive streak of positive/negative values如何总结最长的连续正/负值
【发布时间】:2019-04-25 04:39:20
【问题描述】:

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

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

我找到了一个可以在 Excel 中使用但由于某种原因在 Google 表格中失败的解决方案,可在此处获得:https://www.mrexcel.com/forum/excel-questions/330468-sum-longest-streak.html 提供的公式在复制到 Google 表格时会导致错误,指出 small() 没有有效的输入功能。我将 Excel 与 Google 表格并排进行了比较,公式在 Excel 中成功,但在表格中不成功。

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

负连胜: ArrayFormula(MAX(频率(IF(B1:B99=0,A1:A99)))))

最长的连胜可能超过 1 次。如果可能的话,我想退回金额最大的那个。

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

【问题讨论】:

    标签: google-sheets-formula


    【解决方案1】:

    您欣赏的 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))
    

    然后复制到右边。

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

    【讨论】:

      猜你喜欢
      • 2022-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多