EXCEL表VBA代码如何实现简单条件判断,然后自动计算结果,数据问题如图,在线等,急!!求代码

实现功能,如果A列的内容相加,遇到等于一,直接结算,相加大于1的就执行下一条结算(结算规则为总价除总吨数,然后均到每单价格上)例子:A客户直接就是=E2 B客户就是=($D3/($D$3+$D$4))*($E$3+$E$4)

代码如下,实际上就是用的工作表函数sumif函数。
Sub 计算()
Dim i%, y%
i = Range("C65536").End(xlUp).Row
For y = 2 To i
Range("G" & y) = (Range("D" & y) / (Application.WorksheetFunction.SumIf(Range("C:C"), Range("C" & y), Range("D:D")))) * (Application.WorksheetFunction.SumIf(Range("C:C"), Range("C" & y), Range("E:E")))
Next
End Sub
代码图如下:



这里是加了下划线进行换行来照的,不然看起来不方便。
最后效果如下图:

追问

数据一多起来,运行结果就不对是要怎么调整??

追答

这个实际上就是用的你提供的公式,只是把你的D3+D4、E3+E4这一部分改用了SUMIF函数来做的,应该不存在这个数据一多就不对的。

追问

我想知道你这个流程的判断条件是???

追答

=($d3/sumif($C$2:$C$100,C2,$D$2:$D$100))*sumif($C$2:$C$100,C2,$E$2:$E$100)
没有判断,实际就是上面这个公式而已

只是该用vba形式了而已

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-05-22
写是可以写得有实际数据才好测试