VBA中的SUMIFfunction无法正常工作

Public Function GRIDSALES(rev_date As Date, grid_date As Date) As Variant Application.Volatile (True) Set Final_Price = Sheets("KRONOS").Range("$H:$H") Set Team = Sheets("KRONOS").Range("$DO:$DO") Set First_PD = Sheets("KRONOS").Range("$Q:$Q") GRIDSALES1 = Application.WorksheetFunction.SumIfs( _ Final_Price _ , Team, "<>9" _ , First_PD, ">=" & rev_date, First_PD, "<=EoMonth(" & grid_date & ")") End Function 

上面的VBA代码没有任何错误,但不会生成答案。 我试图创build一个UDF,它为两个daterev_dategrid_date之间的所有销售团队(不包括团队9)总结最终价格。 我错过了什么?

在“GRIDALES1”和"<=EoMonth("而不是Application.WorksheetFunction.EoMonth(grid_date, 0)中设置sumif Application.WorksheetFunction.EoMonth(grid_date, 0) ?)1的目标范围是“硬编码的”,sunifs的结果是double,它应该是:

 Function ASALES(rev_date As Date, grid_date As Date) As Double Dim Final_Price As Range Dim Team As Range Dim First_PD As Range Application.Volatile (True) Set Final_Price = Sheets("Sheet1").Range("H5:$H11") Set Team = Sheets("Sheet1").Range("E5:E11") Set First_PD = Sheets("Sheet1").Range("F5:F11") ASALES = Application.WorksheetFunction.SumIfs( _ Final_Price _ , Team, "<>9" _ , First_PD, ">=" & rev_date _ , First_PD, "<=" & Application.WorksheetFunction.EoMonth(grid_date, 0)) End Function 

您的输出应该是函数名称。 将GRIDSALES1更改为GRIDSALES。