我正在尝试使用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")
。
如何更改此项以动态移动?
您需要在条件中包含相同的范围并使用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
。