0

我有一个简单的公式,例如: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 正在将标准转换为文本,所以我尝试了不同的方法,例如使用 char(34)、不同数量的引号、将值放在不同的单元格中并引用但没有帮助。知道我缺少什么吗?

示例表:TBL1:

总结活动
5 0001
20 0002
50 0003
...

TBL2:
类型总计
EHT SUMIFS 在这里
CT SUMIFS 在这里
其他总结在这里
4

3 回答 3

0

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

我试过你的公式,当我输入公式时效果很好Ctrl + Shift + Enter

于 2014-11-14T16:01:40.947 回答
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 有条件。

于 2014-08-12T00:03:30.377 回答
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)
于 2021-10-17T15:07:03.230 回答