2013-03-07 44 views
0

我之前從未使用過AVERGEIFS,對我而言它有點複雜,所以請幫助我。在Excel中創建AVERAGEIFS

我有一個範圍,在這裏我要平均在列A列值對具有列值B等於2點,並且列A的值大於3更低的行,所以這是正確的:

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

編輯 我得到一個「類型不匹配」

ColumnA和ColumnB的範圍,在if語句,這是我想要的

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」) clusterfuck上述錯誤,中風出來

+0

您將您的問題標記爲'excel-vba' - 您是否試圖訪問VBA中的AVERAGEIFS公式,即使用'WorksheetFunction.Averageifs' - 或者您是否指向普通的Excel公式? – 2013-03-07 08:29:32

+0

@PeterAlbert謝謝澄清,我在談論worksheetfunctions.averageifs – Jakob 2013-03-07 08:30:48

回答

2

的您發佈的代碼的語法是正確的在您的工作表提供

  • 你有Dim「編columnAcolumnB作爲Range的和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 
+0

感謝您的意見。我似乎在每次運行中都有一個錯誤,並且countif返回一個類型不匹配,所以我懷疑它是不是沒有得到任何結果? – Jakob 2013-03-07 10:03:31

+1

我建議你創建一個精簡的測試例程來嘗試並重現錯誤,併發布 – 2013-03-07 10:29:20

2

假設columnAcolumnB具有相同的尺寸的範圍內,公式是正確的:

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

將返回塔A的平均,其中A < 3和B = 2。

+0

謝謝,我很高興我說得對,除非我完全沒有,我仍然得到Type MisMatch錯誤,雖然對我來說,看起來像正確的類型。 – Jakob 2013-03-07 10:01:25