我尝试将SUMIFS包含在单个数组中,并且工作正常:
=SUM(SUMIFS(Sheet3!H:H,Sheet3!G:G,"X",Sheet3!E:E,"SA",Sheet3!D:D,{"A","B","C"}))
当我尝试在下面添加第二个数组时,它只给出{" X"," Y"," Z"中的第一个/最后一个项目。 }
=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中的两个数组无法正常工作?
答案 0 :(得分:3)
您可以为其中一个列表使用行数组,为另一个列表使用列数组。试试这个:
map
内部=SUM(SUMIFS(Sheet3!H:H, Sheet3!G:G, {"X","Y","Z"},
Sheet3!E:E,"SA",Sheet3!D:D,{"A";"B";"C"}))
' ^ ^
构成两个数组的交叉积;一个矩阵,其中每个条目都是“sumif”,它们匹配相应的行和列元素:
SUMIFS
然后外部 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"}
适用于所有情况。
这两个列表不需要具有相同的基数。
此技术不能推广到两个以上的列表。如果您有第三个标准列表,则需要以不同的方式继续。