我想計算列E中單元格的平均值,僅針對列I中具有0的行。它需要if條件,然後執行標準平均代碼行。我提供我編寫的代碼來計算列E中所有單元格的平均值。如果有條件,此代碼需要編輯以包含此內容。如果有人知道要添加什麼,如果條件,我將不勝感激!If條件下的平均值
此外,我提供的屏幕截圖
lastrow = Cells(Rows.Count, "D").End(xlUp).Row
Range("C1").Formula = "=AVERAGE(E2:E" & lastrow & ")"
我想計算列E中單元格的平均值,僅針對列I中具有0的行。它需要if條件,然後執行標準平均代碼行。我提供我編寫的代碼來計算列E中所有單元格的平均值。如果有條件,此代碼需要編輯以包含此內容。如果有人知道要添加什麼,如果條件,我將不勝感激!If條件下的平均值
此外,我提供的屏幕截圖
lastrow = Cells(Rows.Count, "D").End(xlUp).Row
Range("C1").Formula = "=AVERAGE(E2:E" & lastrow & ")"
式:
=AVERAGEIF(I:I,0,E:E)
或VBA:
WorksheetFunction.AverageIf(Range("I:I"), 0, Range("E:E"))
據我所知,你不能用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
欣賞它的好友!謝謝! –
您是否需要將公式放入'Range(「C1」)'中或者是否可以在其中放入一個值? – Jarom
我只是需要它來打印平均值..然後我可以使用.value = .value並將其作爲值 –