在macros excel上使用averageif的大于500的平均值是多少?

时间:2016-08-16 03:47:35

标签: excel macros

我试图找到大于500的平均值,并使用平均值将其置于F2中。我无法计算如何显示第1列中超过500的行数,因此我可以将其除以总和。 A2 = 435.02 A3 = 340.38 A4 = 551.11 A5 = 230.22 A6 = EOF。

到目前为止,我有:

Sub averageif()
    Dim rownum as integer
    Rownum=2
    Do
        If (cells(rownum,1).value>500) then
            Cells(2,6).value=cells(2,6).value+cells(rownum,1).value
        End if
        Rownum=rownum+1
    Loop until (cells(rownum,1).value="EOF")
End sub

1 个答案:

答案 0 :(得分:1)

要查找第1列中超过500的行数,可以使用COUNTIF函数 在不在第1列中的单元格中,您可以使用以下公式。

  

= COUNTIF(A:A, “> 500”)

要在值上查找值的总和,您也可以使用SUMIF函数

  

= SUMIF(A:A, “> 500”)

然后你可以通过除以两者的结果找到平均值。 直接的公式是

  

= AVERAGEIF(A:A, “> 500”)

或者,在第1列中找到超过500的平均值的已完成的宏低于

Sub CalculateAverages()
    'Find the average of Column 1 values over 500
    Dim count_over_500 As Long
    Dim sum_over_500 As Double
    Dim average As Double
    Sheets(1).Select    'Select the sheet where the data originates
    count_over_500 = Application.WorksheetFunction.CountIf(Range("A:A"), ">500")
    sum_over_500 = Application.WorksheetFunction.SumIf(Range("A:A"), ">500")
    average = sum_over_500 / count_over_500
End Sub

或直线AverageIF优化版

Sub CalculateAveragesUsingAverageIf()
    Dim average As Double
    Sheets(1).Select    'Select the sheet where the data originates
    average = Application.WorksheetFunction.AverageIf(Range("A:A"), ">500")
End Sub