在Excel中创buildAVERAGEIFS

我从来没有用过AVERGEIFS ,对我来说有些复杂,所以请帮助我。

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

     WorksheetFunction.averageifs(columnA,columnA,“<3”,columnB,“2”) 

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

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

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

编辑

我假设这一定与我的types有关然后,averageifs抛出一个1004 cannot get the averageifs property of class worksheetfunction函数的averageifs 1004 cannot get the averageifs property of class worksheetfunction当我input我的参数,但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”)的上面的错误clusterfuck的string,笔画出来

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

  • 你有columnAcolumnB作为Range ,然后Set为有效的范围
  • 表单上的数据会返回结果(即至less有一行符合标准)

演示error handling:

 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 

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

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

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