具有3个或更多多个数组条件的求和

时间:2018-12-07 16:48:56

标签: arrays excel sumifs

我有一个SUMIFS,可以处理下拉列表和复选框中包含的值。下拉列表中的值用作AND准则(即,以下拉列表中的该值与下拉列表中的该值为条件的列求和),但是当我想在复选框中包括这些值时,事情变得棘手根据用户输入是动态的。本质上,复选框中的值需要作为OR条件工作(即,如果选择了框1,则基于该值对一列求和;如果选择了框2,则根据该值对列求和,这也取决于下拉列表中的值)。

在线示例显示您可以通过执行以下操作来获得具有OR条件的求和:

{=SUM(SUMIFS(sumrange,
    criteriarange0,"x",
    criteriarange1,{"1","2","3"},
    criteriarange2,{"A";"B"}
))}

其中
"x"是下拉菜单中的值,
如果选中三个对应的复选框,则{"1","2","3"}是结果值,
如果选中了{"A";"B"}的链接复选框,则它们是另一组结果值。
1,2,3,A,B均为布尔值,因为如果未选中复选框,则它们可以从值更改为0(因此存在组合矩阵)。

我的问题是,如何使用3个或更多作为OR条件的多个数组来执行此操作,这些数组在公式中被引用为单元格引用?像这样:

{=SUM(SUMIFS(sumrange, 
    criteriarange0,"x", 
    criteriarange1,value_range1, 
    criteriarange2,value_range2, 
    criteriarange3,value_range3
))}

我找到了涉及SUMPRODUCTISNUMBER(MATCH()公式的内容,但无法使其正常工作。此外,表格是500,000行x 100列,因此公式必须有效。

这是我目前带有注释的原始公式:

={SUM(

SUMIFS(sumrange,$A:$A, $A1, $B:$B, $B1, $C:$C, $C1...,  
  

'求和一个范围,该范围取决于单元格$ A1,$ B1,$ C1中的值。这些是AND条件。

$E:$E,$AA10:$AC10, 
  

'包括$ AA10:$ AC10中的动态值,其值包括:5年,10年,15年。这些是OR条件。

$F:$F,{$AA11;$AC11}, 
  

'还包括针对不同单元格范围的这些动态值:“ 5天,10天,15天”。这些是OR条件。

$G:$G,{$AA12;$AJ12})
)} 
  

”,还包括这些多个动态值,这些值也是“或”条件:“ 5个苹果,10个梨,15个香蕉”。

     

可以选择动态值的任意组合。

1 个答案:

答案 0 :(得分:0)

您可以对两个代表最后一个标准的SUMIFS产生的总数求和。

=SUM(SUM(SUMIFS(A:A, B:B, "x", C:C, {1,2,3}, D:D, "a")), 
     SUM(SUMIFS(A:A, B:B, "x", C:C, {1,2,3}, D:D, "b")))

最后两个条件不能与第二个条件在同一布局中使用。这会在数组的循环计算过程中产生混乱和错误的计算。但是,如果您可以认为最后一个条件与第二个条件位于不同的布局中,则计算周期应会产生正确的结果。 TRANSPOSE将更改最后一个条件数组的“方向”,从而更改其计算方式。

=SUM(SUMIFS(A:A, B:B, "x", C:C, {1,2,3}, D:D, TRANSPOSE({"a","b"})))

产生的结果与第一个公式相同。

要添加第三组基于OR的条件,您需要将两种方法结合起来。

=SUM(SUM(SUMIFS(A:A, B:B, "x", C:C, {1,2,3}, D:D, TRANSPOSE({"a","b"}), E:E, "m")),
     SUM(SUMIFS(A:A, B:B, "x", C:C, {1,2,3}, D:D, TRANSPOSE({"a","b"}), E:E, "n")),
     SUM(SUMIFS(A:A, B:B, "x", C:C, {1,2,3}, D:D, TRANSPOSE({"a","b"}), E:E, "o")))

¹样本数据:
A列填充了随机数。
B列填充了= CHAR(RANDBETWEEN(87,89))
填充= RANDBETWEEN(0,5)的C列
填充= CHAR(RANDBETWEEN(65,67))的D列