SumIfs条件数组条件

时间:2014-08-11 23:20:02

标签: arrays excel conditional sumifs

我有一个简单的公式,例如:IFERROR(SUM(SUMIFS(TBL1[SUMCOLUMN],TBL1[ACTIVITY],{"0001","0002","0003"})),0),它有效。

但是我希望{"0001","0002","0003"}部分根据列的值而不同,所以我将公式更改为:

IFERROR(SUM(SUMIFS(TBL1[SUMCOLUMN],TBL1[ACTIVITY],IF([@TYPE]="EHT",{"0001","0002","0005"},IF([@TYPE]="CT",{"0003","0004","0007"},"0010")))),0)

它只根据第一个数组值给出了值。 例如:

IF([@TYPE]="EHT",{"0001","0002","0005"} //Gives me sum of only where "0001" and ignores "0002","0005" 
IF([@TYPE]="CT",{"0003","0004","0007"} //Gives me sum of only where "0003" and ignores "0004","0007" 

我认为excel正在将critera转换成文本,所以我玩了不同的方法,比如使用char(34),不同数量的引号,将值放在不同的单元格中并引用但没有帮助。 知道我错过了什么吗?

样本表: TBL1:

SUMCOLUMN   ACTIVITY
5           0001
20          0002
50          0003
...

TBL2:
TYPE        TOTAL
EHT         SUMIFS GOES HERE
CT          SUMIFS GOES HERE
OTHER       SUMIFS GOES HERE

2 个答案:

答案 0 :(得分:0)

我不知道为什么这样做 - 这很烦人。 但在你的特定情况下,这会有效:

=IFERROR(SUM(
  IF([@TYPE]="EHT",SUMIFS(TBL1[SUMCOLUMN],TBL1[ACTIVITY],{"0001","0002","0005"}),0),
  IF([@TYPE]="CT",SUMIFS(TBL1[SUMCOLUMN],TBL1[ACTIVITY],",{"0003","0004","0007"}),0),
  SUMIFS(TBL1[SUMCOLUMN],TBL1[ACTIVITY],"0010")
),0)

由于SUMIFS返回一个结果数组而你正在对它们求和,而不是试图使条件成为条件使整个SUMIFS成为条件。

答案 1 :(得分:0)

我知道这个问题有点陈旧,但我最近不得不做一些非常相似的事情,我随机地遇到了这个问题。

我尝试了你的公式,当我Ctrl + Shift + Enter公式时,它完全正常。