Excel 带数组参数的SumIfs

Excel 带数组参数的SumIfs,excel,vba,Excel,Vba,有人知道如何将以下内容翻译成excel VBA吗 SUM(SUMIFS(Sheet3!H:H, Sheet3!G:G, {"X","Y","Z"}, Sheet3!E:E,"SA")) 我试过了 WorksheetFunction.Sum(WorksheetFunction.Sumifs(Worksheet("Sheet3!").Range("H:H"),Worksheet("Sheet3!").Range("G:G"), WorksheetFunction.OR("X","Y","Z"),W

有人知道如何将以下内容翻译成excel VBA吗

SUM(SUMIFS(Sheet3!H:H, Sheet3!G:G, {"X","Y","Z"}, Sheet3!E:E,"SA"))
我试过了

WorksheetFunction.Sum(WorksheetFunction.Sumifs(Worksheet("Sheet3!").Range("H:H"),Worksheet("Sheet3!").Range("G:G"), WorksheetFunction.OR("X","Y","Z"),Worksheet("Sheet3!").Range("E:E"),"SA"))

但我枯萎了

类型不匹配错误

没有excel函数


或者……

您需要延迟绑定它:

=Application.SumProduct(Application.SumIfs(Worksheets("Sheet3").Range("H:H"),Worksheets("Sheet3").Range("G:G"), Array("X","Y","Z"),Worksheets("Sheet3").Range("E:E"),"SA"))

您需要延迟绑定它:

=Application.SumProduct(Application.SumIfs(Worksheets("Sheet3").Range("H:H"),Worksheets("Sheet3").Range("G:G"), Array("X","Y","Z"),Worksheets("Sheet3").Range("E:E"),"SA"))
让我们试试: 在Excel中

我建议您设置一个最小范围,不放置整列将使公式运行速度变慢,请记住替换是区分大小写的

让我们试试: 在Excel中


我建议您设置一个最小范围,不放置整列将使公式运行变慢,请记住“替换”区分大小写

对此表示抱歉。我认为SumProduct()是将列中的每个元素相乘,然后相加。但我的目的只是分别找到具有条件=“x”、“y”、“z”的估值,然后将估值相加。。。希望这是有道理的。通过他们,我确实根据您帮助我修改的代码获得了所需的值。我只是有点困惑。多谢各位though@Daniel第二个条件对于SUMPRODUCT是可选的,是一种自然进行数组求和的方法,在本例中必须使用,因为SUM将只返回第一个条件,因为无法使用数组输入工作表函数。非常感谢!如果这对你有用,请根据史葛的回答点击复选标记。我猜“Sum”也可以代替“Sumproduct”。另外,我会将“工作表”关键字替换为“工作表”,因为它给了我一个编译错误。很抱歉。我认为SumProduct()是将列中的每个元素相乘,然后相加。但我的目的只是分别找到具有条件=“x”、“y”、“z”的估值,然后将估值相加。。。希望这是有道理的。通过他们,我确实根据您帮助我修改的代码获得了所需的值。我只是有点困惑。多谢各位though@Daniel第二个条件对于SUMPRODUCT是可选的,是一种自然进行数组求和的方法,在本例中必须使用,因为SUM将只返回第一个条件,因为无法使用数组输入工作表函数。非常感谢!如果这对你有用,请根据史葛的回答点击复选标记。我猜“Sum”也可以代替“Sumproduct”。另外,我会用“Sheets”替换“Sheets”关键字,因为它给了我一个编译错误。you僵局,Evaluate()是否可以使用多个数组而不是两个?you僵局,Evaluate()是否可以使用多个数组而不是两个?
=SumProduct(H:H*(E:E="SA")*(Substitute("XYZ",G:G,"") <>"XYZ"))
=Evaluate("=SumProduct(H:H*(E:E =""SA"")*(Substitute(""XYZ"",G:G,"""") <>""XYZ""))")
=Evaluate("=SUM(SUMIFS(H:H, E:E,""SA"", G:G, {""X"",""Y"",""Z""}))")