行总和,当第一个结果为正时停止。其余行值将被转换/替换为 0,最后一个结果为正的行将获得最终总和。
例如。
行 A1:F1 = -2、-3、-6、6、20、2
将会有:
行 = 0, 0, 0, 0, 0, 15, 17
编辑:在我的脏解决方案(公式)中,我有这些:
对于 A2:F2 中的每一行
A2 =如果(SUM(A1:A1)<0,0,A1)
B2 =如果(SUM(A1:B1)<0,0,SUM(A1:B1))
C2 =如果(SUM(A1:C1)<0,0,SUM(A1:C1))
D2 =如果(SUM(A1:D1)<0,0,SUM(A1:D1))
E2 =IF(SUM(A1:E1)<0,0,SUM(A1:E1))
F2 =如果(SUM(A1:F1)<0,0,SUM(A1:F1))
但是当它达到数组中第一个正数时,它应该停止评估。
非常感谢
答案1
我认为无需 VBA 即可完成此操作(始终是更好的解决方案!)。如果您的数据在 A 行,请尝试将其放在 B1 中:=IF(SUM($A$1:A1)<0;0;SUM($A$1:A1))
然后复制粘贴到右侧。
附言:不确定在总和单元格右侧的单元格中应该写什么。现在,它一直在添加这些值。如果这应该有不同的效果,请编辑您的问题。
答案2
我能够通过添加额外的“IF”语句来实现它而无需宏。输出应该是:
给定行 A1:F1 = -2, -3, -6, 6, 20, 2
输出行 A2:F2 = 0, 0, 0, 0, 0, 15, 2
将在第一个正的 SUM 结果处停止。
。
所以公式变得很长,不是一个好的解决方案。我现在可以使用这个,但如果有人可以分享一个宏,我将不胜感激。
对于行 A2:F2
A2=如果(SUM(A1:A1)<0,0,A1)
B2=如果(SUM(A1:B1)<0,0,如果(A1>0,B1,SUM(A1:B1)))
C2=如果(SUM(A1:C1)<0,0,如果(B3>0,C1,SUM(A1:C1)))
D2=如果(SUM(A1:D1)<0,0,如果(C3>0,D1,SUM(A1:D1)))
E2=如果(SUM(A1:E1)<0,0,如果(D3>0,E1,SUM(A1:E1)))
F2=如果(SUM(A1:F1)<0,0,如果(E3>0,F1,SUM(A1:F1)))
。
再次感谢大家的想法