Excel 宏 一行求和

Excel 宏 一行求和

行总和,当第一个结果为正时停止。其余行值将被转换/替换为 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)))

再次感谢大家的想法

相关内容