【问题标题】:COUNTIF if values are not in one row如果值不在一行中,则为 COUNTIF
【发布时间】:2020-10-05 17:20:22
【问题描述】:

Excel

         A       B       C        D        E        F
1        4                       400
2                                          0
3                                                  700
4                                  0         
5                                300
6                                                    0
7                                                    0
8                                        100
9

在上面的Excel 表中,我在不同的单元格中有值。
在单元格A1 中,我想计算包含值<> 0 的单元格的数量。
因此,我尝试使用这个公式:

A1 = COUNTIF((D1,E2,F3,D4,D5,F6,F7,E8),0)

但是,通过这个公式,我得到#VALUE!
我认为问题在于COUNTIF 公式的array 不在一行中。

解决问题的一种方法是创建一个辅助列,在其中我将所有值放在一行中,但我想知道是否还有另一种方法可以在没有任何辅助列的情况下做到这一点?

【问题讨论】:

  • 你想单独计算这些单元格还是可以使用D1:F8这个范围?
  • 需要分开。
  • 如果是我,我会有一个与“掩码”大小相同的表格,我感兴趣的单元格为 1,否则为 0。例如,如果我感兴趣的区域是 B1:F9,我有另一个表(比如 H1:L9),其中包含 1,我关心 B1:F9 中的相应单元格,而我不关心的区域为 0。公式 =SUMPRODUCT(H1:L9,INT((B1:F90))) 应返回值 0 的感兴趣单元格的计数。掩码使添加新感兴趣的单元格变得简单。我意识到 OP 不需要“帮助列”,但这种方法可能更灵活。

标签: excel excel-formula


【解决方案1】:

如果必须使用非连续范围,您可以使用:

=SUM(COUNTIF(INDIRECT({"D1","E2","F3","D4:D5","F6:F7","E8"}),"<>0"))

注意这是易变的!

【讨论】:

  • 就个人而言,我不是 INDIRECT() 的粉丝。如果 OP 在表格上方的电子表格中添加一行,则此函数将出错,因为 Excel 不会将字符串“D1”更改为“D2”
  • @DS_London,哦,别误会我的意思。我从不个人使用这个!
  • 呸!你让我担心。恕我直言,我在下面的回答避免了这种情况......
【解决方案2】:

由于您的区域设置,这是一个问题。 默认情况下,Excel 使用控制面板中区域设置下定义的列表分隔符。默认情况下,美国英语版本的 Excel 使用逗号 (,) 作为列表分隔符,而其他国际版本可能使用分号 (;)。尝试在范围和条件之间加分号。

A1 = COUNTIF(D1,E2,F3,D4,D5,F6,F7,E8; 0)

【讨论】:

    【解决方案3】:

    这需要更多的输入,但如果您打算使用特定的单元格:

    =SUM(D1<>0,E2<>0,F3<>0,D4<>0,D5<>0,F6<>0,F7<>0,E8<>0)
    

    D10 测试将返回 TRUE 或 FALSE。在 SUM() 函数中,Excel 将 TRUE 视为 1,将 FALSE 视为 0。而且您不必使用 INDIRECT(),它可以为将来存储麻烦。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      • 2016-01-09
      • 2020-06-11
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多