【问题标题】:Need help to create a formula in google spreadsheet需要帮助在谷歌电子表格中创建公式
【发布时间】:2020-07-06 18:47:09
【问题描述】:

我想创建一个公式,以在单元格中显示某个范围的连续赢/输(如果数字是正数或负数),我想将连续总价值的总和添加到单独的单元格中.

例如,我有一个基本表

A1:A100 我有不同的正数或负数,在 B1 中我想显示该范围内最长的正数,比如说从 A25 到 A45,所以值应该是 10,在 B2 中我想显示A25 到 A45 总和的总值。 在 C1 和 C2 中相同,但为负数

编辑: 我还想显示该范围内任何条纹的负/正的最高总和,而不是最长的

我希望足够清楚。

【问题讨论】:

    标签: if-statement google-sheets google-sheets-formula transpose array-formulas


    【解决方案1】:

    D1:

    =ARRAYFORMULA(MAX(LEN(SPLIT(JOIN(, IF(A:A>0, 1, 0)), 0))))
    

    D2:

    =ARRAYFORMULA(MAX(LEN(SPLIT(JOIN(, IF(A:A<0, 1, 0)), 0))))
    

    D3:

    =ARRAYFORMULA(SUM(SPLIT(INDEX(SORT(TRANSPOSE({LEN(SPLIT(JOIN(, 
     IF(A:A>0, 1, "♥")), "♥")); SPLIT(JOIN(, 
     IF(A:A>0, A:A&"♦", "♥")), "♥")}), 1, 0), 1, 2), "♦")))
    

    D4:

    =ARRAYFORMULA(SUM(SPLIT(INDEX(SORT(TRANSPOSE({LEN(SPLIT(JOIN(, 
     IF(A:A<0, 1, "♥")), "♥")); SPLIT(JOIN(, 
     IF(A:A<0, A:A&"♦", "♥")), "♥")}), 1, 0), 1, 2), "♦")))
    

    【讨论】:

    • 非常感谢您的帮助,但正数公式不起作用,他们给了我错误的数字 =ARRAYFORMULA(MAX(LEN(SPLIT(JOIN(, IF(D:D>0, 1, 0)), 0)))) 和 =ARRAYFORMULA(SUM(SPLIT(INDEX(SORT(TRANSPOSE({LEN(SPLIT(JOIN(, IF(D:D>0, 1, "♥"))), "♥" )); SPLIT(JOIN(, IF(D:D>0, D:D&"♦", "♥")), "♥")}), 1, 0), 1, 2), "♦") )) 我的表实际上从第 22 行开始
    • 我的表格从 D22 开始,直到我放 D360,但我可以走更长的时间,列中的每个单元格都是 =IF(OR(F50""),(SUM(F50-C50) /C50*100),"") 从 D22 到 any 并且我已经有到 D51 的条目,但之后仍然存在 =IF(OR(F50""),(SUM(F50-C50)/C50*100 ),"") 但目前为空
    • 你能分享一份你的工作表吗?
    • 提供的答案公式都是正确的。您的问题是您在 D30:D 中使用的公式。而不是=IF(OR(F30&lt;&gt;""),(SUM(F30-C30)/C30*100),""),您需要使用=IF(OR(F30&lt;&gt;""),(SUM(F30-C30)/C30*100),) 请注意,使用"" 并不意味着您输出空单元格。你实际输出的是“没有任何东西的细胞”
    • thx 非常有效 :-) 如果您不介意询问,我几乎没有其他想法可以解决
    猜你喜欢
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多