VBA Averageifs的动态条件范围为

时间:2018-01-02 15:26:31

标签: excel vba excel-vba

我正在尝试使用WorksheetFunction.Averageifs并拥有以下代码:

Range("C1:C676") = 
Application.WorksheetFunction.AverageIfs(Sheets(modelName).Range("M:M"), _ 
Sheets(modelName).Range("G:G"), Sheets(wsName).Range("A1"))

我遇到的问题是,最后一个条件范围没有通过Sheets(wsName).Range("A1:676")中的完整数据列运行,以符合初始范围中C列中的正确行;它只是继续使用A1。例如,当初始行为C82时,最终标准范围应为Sheets(wsName).Range("A82")

如何更改此设置以动态移动?

1 个答案:

答案 0 :(得分:1)

您需要在条件中包含相同的范围并使用Application.AverageIfs而不是WorksheetFunction.AverageIfs

Range("C1:C676") = 
Application.AverageIfs(Sheets(modelName).Range("M:M"), _ 
Sheets(modelName).Range("G:G"), Sheets(wsName).Range("A1:A676"))

或者,您可以将公式放入这些单元格中,然后将其替换为结果值,或使用Evaluate