【问题标题】:SumIfs conditional array criteriaSumIfs 条件数组条件
【发布时间】:2014-10-04 21:49:24
【问题描述】:

我有一个简单的公式,例如: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 在这里 其他总结在这里

【问题讨论】:

    标签: arrays excel conditional sumifs


    【解决方案1】:

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

    =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】:

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

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

    【讨论】:

      【解决方案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)
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多