If条件的平均值

时间:2017-09-01 19:10:52

标签: vba excel-vba if-statement excel-formula average

我想计算E列中单元格的平均值,仅用于列I中有0的行。它需要if条件然后执行标准平均代码行。我提供的代码我有写入以计算列E中所有单元格的平均值。此代码需要编辑以包含此条件(如果条件)。如果有人知道要添加什么,如果条件我会很感激!

另外,我提供了截图

enter image description here

lastrow = Cells(Rows.Count, "D").End(xlUp).Row
Range("C1").Formula = "=AVERAGE(E2:E" & lastrow & ")"

2 个答案:

答案 0 :(得分:4)

式:

=AVERAGEIF(I:I,0,E:E)

或在vba中:

WorksheetFunction.AverageIf(Range("I:I"), 0, Range("E:E"))

答案 1 :(得分:2)

据我所知,除非你把它作为一个数组函数,否则你不能用excel函数做到这一点。数组函数功能强大,但在计算时可能非常慢。这是使用VBA集合的VBA解决方案。

您选择的答案肯定是获得答案的更有效方式。但是,如果您希望以其他方式操纵这些数字,那么此代码可能很有用,因为它将它们放入集合中。

我制作了一个VBA集合并在其中添加了对应于D中0值的E中的所有值。然后我将其总结为一个名为f的变量,然后将其除以集合的计数。然后将它放在你想要的范围内。

Sub test()
Dim a As Collection
Dim lastrow As Integer

Set a = New Collection

lastrow = Cells(Rows.Count, "D").End(xlUp).Row

For x = 1 To lastrow
If Cells(x, 9) = 0 Then
y = Cells(x, 5).Value
a.Add (y)
End If
Next x



For Z = 1 To a.Count
f = a.Item(Z) + f
Next Z

Range("C1").Value = (f / a.Count)


End Sub