哪位VBA高手可以帮忙编一个简单的加权函数?

来源:百度知道 编辑:UC知道 时间:2024/05/17 00:26:56
很简单的,只是简单的加权
比如说,A,B,C,D四列,A占30%,B占30%,C占20%,D占20%,然后算出平均数~
要VBA的编码
非常感谢~

Private Sub Worksheet_Change(ByVal Target As Range) '当某个单元格内容发生改变时,触发该事件,用Target表示该单元格
If Target.Column = 1 or Target.Column = 2 or Target.Column = 3 or Target.Column = 4Then '当Target的为A或B或C或D列时
Cells(Target.Row, 5).value = Cells(Target.Row, 1).value*0.3+Cells(Target.Row, 2).value*0.3+Cells(Target.Row, 3).value*0.2+Cells(Target.Row, 4).value*0.2 '给相应的E列赋值
End If
End Sub

按Alt+F11,把上面的代码复制到相应表的代码里就可以了~当ABCD列内容发生改变时,都会触发相应D列的内容改变

公式就可以了 实在要用vba也可以在vba里用这个公式
A1:D1存放数据,A2:D2存放权值(0.3,0.3,0.2,0.2)
或者在别的地方存放权值也行,只要把公式中A2:D2替换成相应的单元格区域即可
=SUMPRODUCT(A1:D1,A2:D2)
在vba里就是
Application.WorksheetFunction.SumProduct([A1:D1], [A2:D2])
后面方括号的可以换成range或者数组
当然要写成死公式也没问题
=SUMPRODUCT(A1:D1,{0.2,0.2,0.3,0.3})