【问题标题】:Excel 2013 complex countif formulaExcel 2013 复杂计数公式
【发布时间】:2016-02-05 04:21:53
【问题描述】:

我有一个这样设置的源表:

 Days Open     Month
 10             1
 4              1
 6              1
 2              1
 4              2
 2              2
 -1             2
 4              3
 6              3
 7              4
 3              4

我正在尝试设置一个公式来根据以下条件计算行数:

Days Open 列 -1 中的单元格,其中月份为 2、3 或 4(工作表最终的月份数最多为 12,我需要按季度对结果进行分组)。然后,总数必须除以月份列中出现 2、3 或 4 的所有行的总数。

我似乎无法让 COUNTIFS 的第一部分同时使用这两个标准...这是我目前正在努力实现的:

=COUNTIFS('Cumulative Complaints'!K:K,"<=5",'Cumulative Complaints'!K:K,"<>-1")/(COUNTIF('Cumulative Complaints'!L:L,"2")+COUNTIF('Cumulative Complaints'!L:L,"3")+COUNTIF('Cumulative Complaints'!L:L,"4"))

我一直在寻找这里和其他 excel 论坛,并认为 SUMPRODUCT 可能是要走的路?不过,考虑到“开放日”列所需的标准(-1),我无法让它发挥作用。

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    试试这个 SUMPRODUCT() 公式:

    =SUMPRODUCT(('Cumulative Complaints'!K:K<=5)*('Cumulative Complaints'!K:K<>-1)*('Cumulative Complaints'!L:L>=2)*('Cumulative Complaints'!L:L<=4))/SUMPRODUCT(('Cumulative Complaints'!L:L>=2)*('Cumulative Complaints'!L:L<=4))
    

    使用 SUMPRODUCT 时,条件 AND 将替换为 *。它要求所有四个条件都为真才能返回 1; 1 * 1 * 1 * 1 = 1如果任何为假,则返回0,因此1 * 1 * 0 * 1 = 0。因此,当它遍历行时,它返回1或0以添加到总和中。

    【讨论】:

    • 很抱歉继续讨论这个问题,但我真的无法强调在 SUMPRODUCT 中引用整个列是多么糟糕的想法。尽管这种做法在使用 COUNTIF(S)/SUMIF(S) 时没有任何害处,但对于 SUMPRODUCT(或任何其他数组处理函数)并非如此。除非 OP 确实有数据一直延伸到超过一百万行,否则您要求 Excel 检查可能比实际需要的多数十万个单元格。
    【解决方案2】:

    SUM function 中包装COUNTIFCOUNTIFS 函数允许您使用常量数组作为OR 条件。

    =SUM(COUNTIFS('Cumulative Complaints'!K:K, "<>"&-1,'Cumulative Complaints'!K:K, "<="&5,'Cumulative Complaints'!L:L, {2,3,4}))/SUM(COUNTIF('Cumulative Complaints'!L:L, {2,3,4}))
    

    这不是数组公式,不需要 CSE。

    【讨论】:

      【解决方案3】:

      我的回答是采取不同的方法。

      Excel 有一个非常强大的功能,称为数据透视表,我认为它可能非常适合您的问题以及您可能面临的其他类似问题。

      首先,我会在您的表格中添加几列,如下所示:

      Days Open   Month   Quarter RecentlyOpened
          10          1       1       FALSE
          4           1       1       TRUE
          6           1       1       FALSE
          2           1       1       TRUE
          4           2       1       TRUE
          2           2       1       TRUE
          -1          2       1       FALSE
          4           3       1       TRUE
          6           3       1       FALSE
          7           4       2       FALSE
          3           4       2       TRUE
      
      • 季度的公式是:=CEILING(B2/3,1)
      • 最近打开的公式是:=AND(A2&lt;&gt;-1,A2&lt;=5)

      其次,选择表格,然后执行“插入”>“数据透视表”。

      第三,从字段拖到框,像这样:

      • 将 Quarter 拖到 ROWS 框
      • 将最近打开的拖到过滤器框
      • 将月份拖到值框

      第四,点击Sum of Month,选择Value Field Settings,将Sum改为Count。

      第五,将最近打开过滤器设置为 TRUE。

      结果是这样的:

      与复杂的公式相比,数据透视表通常提供更灵活、更易于阅读和理解的解决方案。

      【讨论】:

      • 我喜欢你的数据透视表解决方案,它更优雅......但是由于这个工作簿的格式,我需要一个单元格中的 % 结果,我可以在其他地方引用。谢谢!
      • 可以像访问任何单元格一样访问数据透视表的单元格。因此,您可以从另一个工作表中引用数据透视表中的 B4,或者您可以编写像 =Sheet2!B4/Sheet2!B6 这样的公式来获取您要查找的百分比。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多