我想计算列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并将其作为值 –