代码之家  ›  专栏  ›  技术社区  ›  Raj

SumIfs条件数组条件

  •  0
  • Raj  · 技术社区  · 10 年前

    我有一个简单的公式: 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)、不同数量的引号、将值放入不同的单元格和引用,但没有帮助。 知道我错过了什么吗?

    示例表: 待定1:

    SUMCOLUMN   ACTIVITY
    5           0001
    20          0002
    50          0003
    ...
    
    TBL2:
    TYPE        TOTAL
    EHT         SUMIFS GOES HERE
    CT          SUMIFS GOES HERE
    OTHER       SUMIFS GOES HERE
    
    3 回复  |  直到 10 年前
        1
  •  0
  •   Jerry Jeremiah    10 年前

    我不知道它为什么这么做——这很烦人。 但在您的特定情况下,这是否可行:

    =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都是有条件的。

        2
  •  0
  •   Aehetag    10 年前

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

    我试过你的配方,当我 Ctrl + Shift + Enter 中的公式。

        3
  •  0
  •   Chris    3 年前
    =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)