Excel SUMIFS - 多数组

Excel SUMIFS - Multiple Array

我尝试将 SUMIFS 包含在单个数组中,它工作正常:

 =SUM(SUMIFS(Sheet3!H:H,Sheet3!G:G,"X",Sheet3!E:E,"SA",Sheet3!D:D,{"A","B","C"}))

当我尝试包含如下所示的第二个数组时,它只给我 {"X"、"Y"、"Z"}[=13= 中的 first/last 项]

 =SUM(SUMIFS(Sheet3!H:H,Sheet3!G:G,{"X","Y","Z"},Sheet3!E:E,"SA",Sheet3!D:D,{"A","B","C"}))

我能想到的唯一解决方法是将公式分成 3 个块({"X"、"Y"、"Z"} 中的每个项目)。

还有其他解决方法吗?或者 SUMIFS 中的两个数组不能正常工作?

您可以对其中一个列表使用行数组,对另一个列表使用列数组。试试这个:

=SUM(SUMIFS(Sheet3!H:H, Sheet3!G:G, {"X","Y","Z"},
  Sheet3!E:E,"SA",Sheet3!D:D,{"A";"B";"C"}))
'                                ^   ^

内部的SUMIFS对两个数组进行叉积;一个矩阵,其中每个条目都是 "sumif" 匹配相应的行和列元素:

        X,A      Y,A    Z,A
        X,B      Y,B    Z,B
        X,C      Y,C    Z,C

然后外层的SUM将所有元素相加。结果,您将得到每个字段与其条件数组的任何元素匹配的总和:

G:G is any of {"X","Y","Z"}      and      D:D is any of {"A";"B";"C"}

当然,另一个条件 E:E="SA" 适用于所有情况。

两个列表不需要具有相同的基数。

此技术不能推广到两个以上的列表。如果您有第三个标准列表,则需要以不同的方式进行。