“无法获取WorksheetFunction类的Averageifs属性”

真的希望有人能帮助我。 我对VBA相对比较陌生,并且创build了一个macros,它将一系列excel表单汇总成输出,按照表格,行和列组织。 基本的机制是程序创build一个表,填充一个表,然后重复。

这个基本机制已经完成,运转良好。 我唯一要做的就是用公式填充单元格。 我无法得到公式的工作。 这是一个非常简单的AverageIfs公式,我反复得到“无法获得WorksheetFunction类的Averageifs属性”错误。 我在这里search了一些信息,并尝试了一些我读的东西,但无济于事。 到目前为止,我有

  • 复制并粘贴公式本身到一个单独的macros(它运行,所以它不是一个错字)
  • 删除公式并检查以确保公式中的每个variables都是我期望它在程序中的这个点上的值(每个variables都是)

我找不到错误的来源。 这里是我的代码的相关摘录 – 我省略了一大部分,但我可以确保所有variables已定义,并且循环正常工作,如果我用硬值(例如“1”)replaceAverageIfs函数

'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 

真的难倒 – 希望有人能帮助我

如果你不能顺利的话,这是另一种select。 只需交换这行代码AverageIfs行:

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