我有一个有几张工作表的工作簿,每个工作表都包含大量相同格式的数据。我想要做的是在一个汇总表上输入一个公式,该公式对来自数据表的数据进行汇总,根据一系列标准选择要和的数据。
工作表列表名为“AdHoc_Sheets”,标准列表命名为“无法控制的补偿”。
第一次尝试:
=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时,返回一个#N/A错误。一些关于处理数组的动态的东西把我搞砸了,我不知道我是否需要求助于MMULT或其他方法。提前谢谢。
发布于 2017-05-19 13:48:45
假设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在公式周围放置了花括号{} (尽管不要自己尝试手动插入这些括号)。
https://stackoverflow.com/questions/44053462
复制