【问题标题】:Calculate sum of differences between rows but only if the previous cell is bigger than the current one计算行之间的差异总和,但前提是前一个单元格大于当前单元格
【发布时间】:2020-02-19 11:52:07
【问题描述】:

我开始对自己的问题感到头疼,因为我的爱我无法弄清楚。 如果这会产生任何差异,则存在未知数量的列,但基本上每一行都需要与前一行进行比较,并且只有当前一个值更大时,它们之间的差异才会被添加到总和中。

例如我有这张桌子

  |  A  |
--|-----|
1 | 100 |
2 |  90 |
3 |  80 |
4 | 100 |
5 |  70 |
6 |  20 |
7 | 100 |
...

预期结果:100,源自 ((100-90) + (90-80) + (100-70) + (70-20))

我花了一整天的时间浏览每个 Excel 教程页面,但找不到一个有用的答案。请帮忙:(

【问题讨论】:

  • 如果您能够在 B:B 中创建一个辅助列,那就很容易了。你是吗?
  • 最好不要,但在这些绝望的时刻,一切都是有帮助的

标签: excel function excel-formula formula


【解决方案1】:

单元格 B2 的公式:(从行中下拉)。

=IF(A1>B1;A1-B1;0)+B1

逻辑:如果前一个值大于当前值,则将差值加到总数中。

【讨论】:

  • 感谢您的大力帮助。我实际上使用了这个的修改版本, =IF(AND(A1>A2;A1-A2A1);A1-A2;"") 它还修复了由于下一行为空而没有被占用的最后一行。
【解决方案2】:

如果你想在一个公式中做到这一点,一种基本的方法是两个使用一个单元格偏移的两个范围:

=SUMPRODUCT((A1:A6-A2:A7)*(A1:A6>A2:A7))

如果您想更动态一些(假设数据中没有空白),您可以尝试

=SUMPRODUCT((A1:INDEX(A:A,COUNT(A:A)-1)-A2:INDEX(A:A,COUNT(A:A)))*(A1:INDEX(A:A,COUNT(A:A)-1)>A2:INDEX(A:A,COUNT(A:A))))

如果数字之间有空格,这将不起作用,您可能需要回到更简单的下拉公式

【讨论】:

  • 实际上并没有用这种方法解决它。但它仍然可能包含空值(可能是 1 万分之一),所以我不能使用它,但感谢您向我展示了一种新的思维方式!
  • 啊,我怀疑可能是这种情况,但感谢您告诉我。
猜你喜欢
  • 2014-07-07
  • 1970-01-01
  • 2013-08-06
  • 1970-01-01
  • 2014-06-03
  • 1970-01-01
  • 1970-01-01
  • 2016-03-17
  • 1970-01-01
相关资源
最近更新 更多