Vba 带If条件的平均值
我想计算E列中单元格的平均值,只计算I列中有0的行的平均值。它需要一个if条件,然后执行标准的平均代码行。。我提供了我编写的代码,用于计算E列中所有单元格的平均值。此代码需要编辑以包含此if条件。如果有人知道要添加什么,如果有这个条件,我将不胜感激 另外,我提供了一个截图 公式:Vba 带If条件的平均值,vba,excel,if-statement,excel-formula,average,Vba,Excel,If Statement,Excel Formula,Average,我想计算E列中单元格的平均值,只计算I列中有0的行的平均值。它需要一个if条件,然后执行标准的平均代码行。。我提供了我编写的代码,用于计算E列中所有单元格的平均值。此代码需要编辑以包含此if条件。如果有人知道要添加什么,如果有这个条件,我将不胜感激 另外,我提供了一个截图 公式: =AVERAGEIF(I:I,0,E:E) 或在vba中: WorksheetFunction.AverageIf(范围(“I:I”)、0、范围(“E:E”))公式: =AVERAGEIF(I:I,0,E:E) 或在
=AVERAGEIF(I:I,0,E:E)
或在vba中:
WorksheetFunction.AverageIf(范围(“I:I”)、0、范围(“E:E”))
公式:
=AVERAGEIF(I:I,0,E:E)
或在vba中:
工作表函数.AverageIf(Range(“I:I”)、0、Range(“E:E”))
据我所知,除非将excel函数设置为数组函数,否则无法使用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
据我所知,除非将excel函数设置为数组函数,否则无法使用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
你需要它把一个公式放在
范围(“C1”)
中吗?或者它能把一个值放进去吗?我只需要它来打印平均值。。然后我可以使用.value=.value并将其作为一个值。您需要它来将公式放入范围(“C1”)
中吗?或者它可以在其中放入一个值吗?我只需要它来打印平均值。。然后我可以使用.value=.value并将其作为一个值