具有动态标准范围的VBA Averageifs

问题描述 投票:0回答:1

我正在尝试使用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")

如何更改此项以动态移动?

excel vba excel-vba
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.