2017-09-01 100 views
0

我想计算列E中单元格的平均值,仅针对列I中具有0的行。它需要if条件,然后执行标准平均代码行。我提供我编写的代码来计算列E中所有单元格的平均值。如果有条件,此代码需要编辑以包含此内容。如果有人知道要添加什么,如果条件,我将不胜感激!If条件下的平均值

此外,我提供的屏幕截图

enter image description here

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

您是否需要将公式放入'Range(“C1”)'中或者是否可以在其中放入一个值? – Jarom

+0

我只是需要它来打印平均值..然后我可以使用.value = .value并将其作为值 –

回答

4

式:

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

或VBA:

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

2

据我所知,你不能用excel函数来做这件事,除非你把它做成一个数组函数。数组函数功能强大,但计算速度可能非常慢。这是一个使用VBA集合的VBA解决方案。

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

我做了一个VBA集合,并在其中添加了E中与D中的0值相对应的所有值。然后,我将它归结为一个名为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 
+0

欣赏它的好友!谢谢! –