我有一组成对的数字列,每列都与相邻的标记字段相关联,表示它是否属于某个组(所有数据都是相同的标记)。您可以将其视为具有各种成本的行(值),并且如果可征税或不征税(标签),则每个都会被标记。
因此,数据在表格中看起来像这样:
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显式,那就太好了。)
答案 0 :(得分:1)
试试这个数组公式: -
=SUM(IF(ISNUMBER(A2:F3),A2:F3,0)*(LEFT(A1:F1,1)="n")*(B2:G3=""))
诀窍是将零放入标记列中的2d数组A2:F3,然后将得到的数组乘以相同的数组,从右边开始,将标记列中的空单元格替换为1。因此,如果标记单元格为空白,则相应的值单元格将乘以1并添加到总计。
答案 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然后粘贴)