Google Sheet: Countif/Filter 使用 isblank

Google Sheet: Countif/Filter working with isblank

我正在尝试对列中的非空白单元格进行计数,这就是我所做的

COUNTIF(D:D,NOT(ISBLANK(D:D)))

它不起作用,总是 returns“0”。 我知道 还有其他更好的方法,例如 COUNTA=countif(D:D,"<>"),但出于学习目的,我想知道如何使用 isblank .我认为这里的问题是 countif 在一个范围内是 运行 而 isblank 在一个单元格上是 运行。然而,这有效并且让我感到困惑:

FILTER(D:D,NOT(ISBLANK(D:D)))

似乎有一种函数被指定用于数组。我认为它在这种情况下发挥了作用。在 Google sheet 的文档页面上,如 https://support.google.com/docs/answer/3093197?hl=en 它没有提到函数是否是“数组函数”,所以我怎么知道什么时候可以放置像 isblank 在另一个函数的参数中,它会循环遍历它自己的参数定义的范围吗?也就是说,为什么isblankFILTER函数中可以循环遍历D:D,而在COUNTIF中却不行?这里的 FILTERCOUNTIF 有什么区别,引用这个区别的文档在哪里?有没有像 FILTER 这样的函数可以与 isblank?

这样的函数一起使用

虽然 FILTERCOUNTIF 之间几乎没有主要区别(比如 FILTERARRAYFORMULA 类型的函数,而 COUNTIF 介于两者之间) 这里的问题是语法方面它们都是不同的,因为这不会起作用:

=COUNTIF(D:D, NOT(ISBLANK(D:D)))

这将无法正常工作:

=FILTER(D:D, "<>")

此外,如果您看一下 ISBLANK,则此函数需要排列(在像您这样的情况下,成为 FILTERINDEXARRAYFORMULA 的一部分,当您使用数组)如:

=INDEX(NOT(ISBLANK(D:D)))

否则只会考虑第一个单元格。同时,如果将 COUNTIF 包装到 FILTERINDEXARRAYFORMULA 中,它将处理每一行的值,例如。它将以不同于预期的方式行事。还要查看 ARRAYFORMULA 下是否支持该功能,您可以像这样简单地测试它:

=ARRAYFORMULA(IS_BLANK(D:D))