在Excel中创建AVERAGEIFS

时间:2013-03-07 08:22:35

标签: excel excel-vba vba

我之前从未使用AVERGEIFS,而且对我来说有点过于复杂,所以请帮助我。

我有一个范围,我希望在列A中对列值B等于2且列A值小于3的行的列值进行平均,所以这是正确的:

    WorksheetFunction.averageifs(columnA, columnA, "<3", columnB, "2") 

修改 我得到了“类型不匹配”

ColumnA和ColumnB是范围,如果句子是我想要的

IF columnA < 3 AND columnB = 2 Then Average(columnA)

<击> 修改

<击>

我假设这必须与我的类型有关,当我输入我的参数时,averageifs抛出1004 cannot get the averageifs property of class worksheetfunction,但是在给定相同参数的情况下,countifs抛出13 Type Mismatch

For Each column In importsheet.UsedRange.Columns
    colcount = .CountIfs(column, column, "<3", importsheet.UsedRange.Columns(DepColumn), sec)
Next

DepColumn和colcount是整数, sec是一个带整数(“2”)的字符串 如果出现上述错误,请将其划掉

2 个答案:

答案 0 :(得分:2)

假设columnAcolumnB是相同大小的范围,那么您的公式是正确的:

WorksheetFunction.Averageifs(Range("A:A"),Range("A:A"),"<3",Range("B:B"),"2")

将返回A列的平均值,其中A <3且B = 2。

答案 1 :(得分:2)

发布的代码的语法正确提供

  • 您有Dim'ed columnAcolumnBRange并且Set为有效范围
  • 工作表上的数据返回结果(即至少有一行符合条件)

带错误处理的演示:

Sub Demo()
    Dim columnA As Range
    Dim columnB As Range
    Dim v
    Set columnA = [A:A]
    Set columnB = [B:B]

    On Error Resume Next
    v = WorksheetFunction.AverageIfs(columnA, columnA, "<3", columnB, "2")
    If Err.Number = 1004 Then
        'No matching data
        v = CVErr(xlErrNA)
    End If
    On Error GoTo 0

End Sub