无法获得WorksheetFunction类的Averageifs属性

时间:2015-09-11 18:32:02

标签: excel vba

我创建了一个宏,它将一系列Excel表单汇总成输出,按表,行和列组织。该程序创建一个工作表,填充一个表,然后重复。

我唯一要做的就是用公式填充单元格。这是一个非常简单的AverageIfs公式,我得到“无法获得WorksheetFunction类的Averageifs属性”错误。我尝试了很多我读过的东西,但无济于事。

到目前为止我

  • 将公式本身复制并粘贴到一个单独的宏中(它运行,因此不是拼写错误)
  • 删除公式并检查以确保公式中的每个变量都是我期望它在程序中的这一点(每一个都是)

以下是我的代码的相关摘录。我省略了很大一部分,但是如果我用一个硬值(例如“1”)替换AverageIfs函数,我可以确保定义所有变量并且循环正常工作。

'Start Loop
VBid = 0
ZEval = 0

Do While VBid <> NumBidder
    ActiveBid = ListInputSheet.Range("H" & 7 + VBid).Value
    Set AnalysisSheet = AnalysisBook.Sheets.Add
    AnalysisSheet.Name = ActiveBid

    XRow = 4
    AnalysisSheet.Range("C" & XRow).Value = ActiveBid
    ZEval = 0

    'Loop all evaluators down rows
    Do While ZEval <> NumEval
        ActiveEval = ListInputSheet.Range("E" & 7 + ZEval).Value
        AnalysisSheet.Range("D" & XRow).Value = ActiveEval
        AnalysisSheet.Range("D" & XRow).Select
        WSub = 0

        'Loop all Category Averages across row in columns
        Do While WSub <> NumCategories
            ActiveCell.Offset(0, 1).Select

            Form = Application.WorksheetFunction.AverageIfs(SummarySheet.Range("F1:F10000"), SummarySheet.Range("A1:A10000"), ActiveEval, SummarySheet.Range("B1:B10000"), ActiveBid, SummarySheet.Range("D1:D10000"), WSub + 1)
            ActiveCell.Value = Form

            WSub = WSub + 1
        Loop

        XRow = XRow + 1
        ZEval = ZEval + 1

    Loop
    'End evaluator loop
    VBid = VBid + 1
Loop
'End Bidder loop

2 个答案:

答案 0 :(得分:1)

我遇到了相同的错误,有一阵子找不到原因,但后来发现这是数据问题。对于一般功能而言,似乎需要多于一行的数据才能工作,因此,当我添加额外的数据行时,它开始正常工作而没有任何问题。

答案 1 :(得分:0)

如果你无法继续下去,这是另一种选择。只需为您的AverageIfs行交换这行代码:

    Form = SummarySheet.Evaluate("AverageIfs(F1:F10000,A1:A10000," & ActiveEval & ",B1:B10000," & ActiveBid & ",D1:D10000," & WSub + 1 & ")")