使用条件数组在多个工作表上汇总Excel

时间:2017-05-18 16:38:27

标签: arrays excel sum

我有一个包含多个工作表的工作簿,每个工作簿包含大量相同格式的数据。我想做的是在汇总表上输入一个公式,该汇总表汇总了数据表中的数据,根据一系列标准选择要汇总的数据。

表单列表名为' AdHoc_Sheets'并且标准列表命名为' Uncontrollable_Compensation'。

首次尝试:

=SUMPRODUCT(SUMIF(INDIRECT("'"&AdHoc_Sheets&"'!"&"C:C"),A40,INDIRECT("'"&AdHoc_Sheets&"'!"&"E:E")))

只需要一个标准(在这种情况下为' A40')时,这种方法很有效。我发现的挑战是将其变为一系列标准。

第二次尝试:

 ={SUMPRODUCT(SUM(IF(ISERROR(MATCH(INDIRECT("'"&AdHoc_Sheets&"'!"&"C:C"),TRANSPOSE(Uncontrollable_Compensation),0)),0,INDIRECT("'"&AdHoc_Sheets&"'!"&"E:E"))))}

当它不是CSE&d时会返回零,而当CSE&#d; d时会返回#N / A错误。关于玩杂耍数组的动力的一些事情搞砸了我,我无法告诉我是否需要转向MMULT或其他方法。提前谢谢。

1 个答案:

答案 0 :(得分:0)

假设C列中的条目是文本而非数字,数组公式**

=SUM(IF(ISNUMBER(MATCH(T(OFFSET(INDIRECT("'"&AdHoc_Sheets&"'!"&"C1"),TRANSPOSE(ROW(C1:C100)-MIN(ROW(C1:C100))),0)),Uncontrollable_Compensation,0)),N(OFFSET(INDIRECT("'"&AdHoc_Sheets&"'!"&"E1"),TRANSPOSE(ROW(C1:C100)-MIN(ROW(C1:C100))),0))))`

使用这样的结构,您无法在不损害性能的情况下随意引用整个列而“逃脱”。因此我选择从第1行到第100行的范围,显然你可以改变,但一定要保持尽可能小。

此致

**数组公式的输入方式与“标准”公式的输入方式不同。您只需按住CTRL和SHIFT键,然后按ENTER键,而不是按ENTER键。如果你已经正确地完成了它,你会注意到Excel在公式周围放置了大括号{}(虽然不要尝试自己手动插入这些)。