0

我以前从未使用AVERGEIFS过,它对我来说有点太复杂了,所以请帮助我。

我有一个范围,我想平均列 A 中列值 B 等于 2 和列 A 值小于 3 的行的列值,所以这是正确的:

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

编辑 我得到一个“类型不匹配”

ColumnA 和 ColumnB 是范围,在 if 句子中,这就是我想要的

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

编辑

我假设这一定与我的类型有关,然后1004 cannot get the averageifs property of class worksheetfunction当我输入参数时,averageifs 会抛出 a,但是 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”)clufuck错误,将其删除

4

2 回答 2

2

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

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

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

于 2013-03-07T08:33:49.500 回答
2

您发布的代码的语法是正确

  • 你已经Dim'edcolumnAcolumnBas Range'sSet然后到有效范围
  • 您工作表上的数据返回结果(即至少有一行符合条件)

带有错误处理的演示:

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
于 2013-03-07T08:51:58.273 回答