我正在尝试使用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")
。
如何更改此设置以动态移动?
答案 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
。