【问题标题】:Excel help. Need to sutract only if value is > 0 to the next cell that has value > 0Excel 帮助。仅当值 > 0 时才需要减去值 > 0 的下一个单元格
【发布时间】:2016-04-13 21:32:53
【问题描述】:

我是一个excel新手,所以请原谅我的无知。我用谷歌搜索过,我想我不知道要找什么。 C 列的值表示为 0 或整数。

C1 145

C2 0

C3 0

C4 142

C5 0

C6 0

C7 140

我正在尝试在 D4 单元格中创建一个公式,该公式将从 C 列中不为零的下一个值中减去 C4。然后在 D7 中也给出相同的计算,即从下一个值大于零的单元格中减去 C7。分别给我 D4 = 3 和 D7 = 2。 有没有可以给我这个的功能。整个电子表格有很多计算,并且值并不总是在某个单元格中,具体取决于之前的值。

【问题讨论】:

    标签: excel formula


    【解决方案1】:

    在 D4 中放置:

    =IF(C4<>0,INDEX($C$1:$C3,AGGREGATE(14,6,ROW($1:3)/($C$1:$C3<>0),1))-C4,"")
    

    并根据需要向下复制。

    编辑以修正公式中给出错误答案的错字。

    【讨论】:

    • 我对你的公式有 2 个问题。 1)为什么聚合而不是大?是因为它在常规公式中进行数组计算?还是仅仅是因为数据中的潜在错误(即 6 选项)? 2) 我不明白聚合公式row($1:$3)/($C$1:$C3&lt;&gt;0) 的数组部分。我不习惯看到一个范围除以一个范围。如果这是一个单独的问题,请告诉我,我会将其作为独立 Q 发布。
    • 第三个问题,这是否仅由于数字的模式而起作用,即每三个条目都是数字?
    • 我使用 Aggregate() 而不是 Large(if()) 只是因为它不是 CSE 数组公式。除法部分是引发错误的原因。当底部数组为假时,它为 0,如果除以 0,则会出现错误,因此聚合将忽略它。这与列中 0 的行数无关。它会在当前所在行上方的行中找到数字不为 0 的最大行号。如果您查看$C$1:$C3,最后一个数字比第 4 行小 1 并且它是相对的,意思是公式被向下拖动它会变为总是比行号小一。
    • 听起来不错,我注意到了 :$C3。因此,如果我理解正确,Row($1:$3) 可能已被替换为任何数字,例如 42,因为您只是为您不感兴趣的信息生成除以零的错误?
    • @ForwardEd 不,这是一个错字,感谢您的发现。我改了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多