2017-09-01 155 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

欣賞它的好友!謝謝! –