Google sheets 计数值不为空的行

Google sheets 计数值不为空的行,google-sheets,google-sheets-formula,Google Sheets,Google Sheets Formula,在谷歌电子表格中:如何计算给定区域中具有值的行?到目前为止,我发现的所有关于这一点的提示都会导致使用公式来计算行数,这些行的内容不是空的(包括公式),而是带有 =IF(1=2;"";"") // Shows an empty cell 也算在内 这个简单任务的解决方案是什么?使用函数“CountBlank”创建另一列,确定引用的单元格是否为空。然后对在新的“CountBlank”列中创建的值使用count。使用Yogi Anand在谷歌上找到的解决方案解决: 下面的示例计算A3:C范围内的非

在谷歌电子表格中:如何计算给定区域中具有值的行?到目前为止,我发现的所有关于这一点的提示都会导致使用公式来计算行数,这些行的内容不是空的(包括公式),而是带有

=IF(1=2;"";"")  // Shows an empty cell
也算在内


这个简单任务的解决方案是什么?

使用函数“CountBlank”创建另一列,确定引用的单元格是否为空。然后对在新的“CountBlank”列中创建的值使用count。

使用Yogi Anand在谷歌上找到的解决方案解决:

下面的示例计算A3:C范围内的非空行数,请记住使用您感兴趣的范围更新公式中的两个范围

=ArrayFormula(SUM(SIGN(MMULT(LEN(A3:C), TRANSPOSE(SIGN(COLUMN(A3:C)))))))
还要确保避免循环依赖,例如,如果您计算A:C中非空行的数量,并将此公式放在A或C列中,则会发生这种情况。

我刚才使用了
=COUNTIF(Range,””
,它为我计算了非空单元格

=counta(range) 
  • counta
    :“返回数据集中值的计数”

    注意:
    CountA
    认为
    是一个值。只有空白单元格(按单元格中的delete键将其清空)不计算在内

    谷歌支持:

  • countblank
    :“返回给定范围内的单元格数”

    注意:
    CountBlank
    同时考虑空白单元格(按delete键清空单元格)和公式返回
    空的单元格

    谷歌支持:

如果您的范围中包含导致
”的公式,则可以从中修改公式

=counta(range)
致:


编辑:函数是
countblank
,而不是
countblanks
,后者将给出一个错误。

对于我来说,没有一个答案适用于包含原始单元格和基于公式的空单元格的范围(例如
=IF(1=2;“”;“”)

对我来说,解决这个问题的办法是:

=COUNTA(FILTER(range,range“”)

以下是我认为迄今为止最好的解决方案: 如果我们依赖于C列,我们可以得到B中的值计数,如下所示:

=COUNTIF(C2:C6,True)
=ArrayFormula(B2:B6<>"")
=CountIf(ArrayFormula(B2:B6<>""),TRUE)
步骤2:使用
FormulaArray
动态创建额外列 但是,这是一个有效的方法-如果您需要一个额外的列,您通常可以使用
数组公式
来实现相同的目标,它可以在内存中创建一个列,而不会占用工作表空间

因此,如果我们想动态创建C,我们可以使用如下数组公式:

=COUNTIF(C2:C6,True)
=ArrayFormula(B2:B6<>"")
=CountIf(ArrayFormula(B2:B6<>""),TRUE)
进一步阅读 此线程中的其他解决方案要么过于复杂,要么在我在本测试表中列举的特定边缘情况下失败:


有关
CountA
工作方式不稳定的原因,请参见给定范围
A:A
,我建议:

=COUNTA(A:A)-(COUNTIF(A:A,"*")-COUNTIF(A:A,"?*"))
问题是COUNTA的计数超过了长度为零的字符串的单元格数

解决办法是精确地找到这些细胞的计数。这可以通过查找所有文本单元格并用至少一个字符减去所有文本单元格来找到

  • COUNTA(A:A):带值的单元格,包括
    ”,但不包括真正的空单元格
  • COUNTIF(A:A,“*”):识别为文本的单元格,包括
    ,但不包括真正的空白单元格
  • COUNTIF(A:A,“?*”):被识别为至少包含一个字符的文本的单元格

这意味着值
COUNTIF(A:A,“*”)-COUNTIF(A:A,“?*”)
应该是文本单元格的数量减去至少有一个字符的文本单元格的数量,即正好包含

的单元格的数量。这是一个对我来说更简单的解决方案:

=COUNTIFS(A:A;"<>"&"")
=SUMPRODUCT(NOT(ISBLANK(F2:F)))
=COUNTIFS(A:A;“&”)

它计算不为空的数字、字符串、日期等。一种非常灵活的方法是使用ARRAYFORMULA

例如,假设要计算非空字符串(文本字段),可以使用以下代码:

=ARRAYFORMULA(SUM(IF(Len(B3:B14)>0, 1, 0)))
这里发生的是“ArrayFormula”允许您对一组值进行操作。使用SUM函数可以指示“ArrayFormula”对集合的任何值求和。“If”子句仅用于检查“empty”或“notempty”,1表示notempty,0表示notempty。“Len”返回不同文本字段的长度,在这里定义要检查的集合(范围)。最后,“ArrayFormula”将为“len”返回大于0的集合(范围)内的每个字段求和1


如果要检查任何其他条件,只需修改If子句的第一个参数。

据我所知,这里的大多数解决方案都计算非空单元格的数量,而不是包含非空单元格的行数

范围
B3:E29
的一个可能解决方案是

=SUM(ArrayFormula(IF(B3:B29&C3:C29&D3:D29&E3:E29="";0;1)))
此处
ArrayFormula(IF(B3:B29&C3:C29&D3:D29&E3:E29=“”;0;1))
返回一列
0
(如果行为空)和
1
(否则)


另一个函数在中给出。

您可以使用应用程序脚本(工具>脚本编辑器)定义自定义函数,例如调用
numNonEmptyRows

function numNonEmptyRows(range) {
  Logger.log("inside");
  Logger.log(range);
  if (range && range.constructor === Array) {
    return range.map(function(a){return a.join('')}).filter(Boolean).length
  }
  else {
    return range ? 1 : 0;
  }
}

然后在这样的单元格中使用它
=numNonEmptyRows(A23:C25)
来计算范围
A23:C25
中的非空行数

在Google Sheets中,要计算二维范围内至少包含一个非空单元格的行数

=ARRAYFORMULA(
  SUM(
    N(
      MMULT(
        N(A1:C5<>""),
        TRANSPOSE(COLUMN(A1:C5)^0)
      )
      >0
    )
  )
)
=数组公式(
总数(
N(
姆穆特(
N(A1:C5“),
转置(列(A1:C5)^0)
)
>0
)
)
)
其中A1:C5是检查非空行的范围

该公式来源于EXCELXOR-

的以下文章中对其进行了解释,它适用于我:

=COUNTIFS(A:A;"<>"&"")
=SUMPRODUCT(NOT(ISBLANK(F2:F)))

<> >从<强> f2 < /强>到<>强>结尾的所有非空单元格计数<强/>/p>我认为这是一个明确的声明,没有其他解决方案。