Excel汇总非连续范围

时间:2015-03-13 05:06:51

标签: excel sum excel-formula

我有一组成对的数字列,每列都与相邻的标记字段相关联,表示它是否属于某个组(所有数据都是相同的标记)。您可以将其视为具有各种成本的行(值),并且如果可征税或不征税(标签),则每个都会被标记。

因此,数据在表格中看起来像这样:

       A    B    C    D    E    F
      ---  ---  ---  ---  ---  --- 
 1:    n1  c1   n2   c2   n3   c3 ...
 2:    11       22    -   33 
 3:    12       22        34    -   

我对这两组数字中的每一组都有一个命名范围; “values”是定义所有列中包含n的列的名称,“tags”是定义具有条件的所有列的名称。对于上面的示例,在名称管理器中,定义如下所示:

values=A:A,C:C,E:E   (and more)
tags=B:B,D:D,F:F

我可以对这些值进行求和,并且它可以正常工作,( = sum(1:1 values))但我也想只对非标记值进行求和,而这似乎更难。从概念上讲,我想做这样的事情,在每一行中只有非标记值:

=SUMIF(1:1 tags, "", 1:1 values)

但似乎 sumif 不适用于具有非连续部分的命名范围。
sumproduct 变体也不起作用,似乎是出于类似的原因;

=SUMPRODUCT(--(1:1 tags=""),1:1 values)

我怎样才能做到最好?

(当函数仅限于连续的命名区域时,如果Excel显式,那就太好了。)

2 个答案:

答案 0 :(得分:1)

试试这个数组公式: -

=SUM(IF(ISNUMBER(A2:F3),A2:F3,0)*(LEFT(A1:F1,1)="n")*(B2:G3=""))

诀窍是将零放入标记列中的2d数组A2:F3,然后将得到的数组乘以相同的数组,从右边开始,将标记列中的空单元格替换为1。因此,如果标记单元格为空白,则相应的值单元格将乘以1并添加到总计。

enter image description here

答案 1 :(得分:0)

您可以将c1放在n1之上,并避免这一切。

c1  c2  c3

n1  n2  n3

11  22  33

是否有任何事情阻止你这样做。

关于您的评论

您可以按原样保留类别

我将范围A1:J1命名为A,A2:J2命名为B

单元格A1包含公式= B2,我将选择A1:B1,如图所示,并复制到范围A的末尾(这将重复公式和空单元格的模式)

这很有效。您需要为100或1000行执行的唯一艰苦工作是将A1:B1范围复制到命名范围的末尾。 (复制这两个单元格后,您可以结束并按住Ctrl + shift + left然后粘贴)

enter image description here