2015-09-11 62 views
1

真的希望有人能幫助我。我對VBA相對比較陌生,並且創建了一個宏,它將一系列excel表單彙總爲輸出,並按表,行和列組織。基本機制是程序創建一個表單,填充表格並重復。「無法獲得WorksheetFunction類的Averageifs屬性」

這個基本機制已經完成並且運行良好。我唯一要做的就是用公式填充單元格。我無法得到公式的工作。這是一個非常簡單的AverageIfs公式,我反覆獲取「無法獲得WorksheetFunction類的Averageifs屬性」錯誤。我在這裏搜索了一些信息,並嘗試了一些我讀過的東西,但無濟於事。到目前爲止,我有

  • 複製和粘貼公式本身到一個單獨的宏(它跑,所以它不是一個錯字)
  • 刪除了公式和檢查,以確保在公式中每個變量是值我期望它在程序中的這一點(每一個都是)

我找不到錯誤的來源。這裏是我的代碼的相關摘錄 - 我省略了大部分,但我可以保證所有的變量定義和循環正常工作,如果我用硬值(例如「1」)

'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 
更換AVERAGEIFS函數

真的難倒 - 希望有人能幫助我

+1

如果我使用正確的值'ActiveEval','ActiveBid'和'WSub',您的代碼適用於我 –

回答

0

如果你不能得到它,這是一個替代方案。只需交換這行代碼AverageIfs行:

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