首页 > 解决方案 > 在 Google 表格中,如何通过 ArrayFormula() 计算行中特定单词的出现次数

问题描述

我无法通过计算行中的特定单词ArrayFormula
下面是我想要实现的图像。

我试过用COUNTIFS()函数计数,但它计算整个数据集中的出现次数,而不是每行。

在此示例中,E 列必须ArrayFormula计算所有出现的“INBOX”
,而
F 列应该ArrayFormula计算所有出现的“SENT”

我已经使用了自定义函数来执行此操作,但是由于它不是内置函数,因此速度非常慢。

我想要达到的目标

标签: google-sheetsgoogle-sheets-formula

解决方案


我认为这回答了你的问题:

=ArrayFormula(if(len(A2:A), countif(if(A2:D="inbox", row(A2:A)), row(A2:A)),))

在此处输入图像描述

解释不是很明显,但在这里:

  • ArrayFormula(if(something)):数组公式将为每一行运行 if 语句:
  • if(len(A2:A), something, ): 将检查每行(A单元格)的第一个值是否不为空,如果有任何值,则运行公式,如果没有,则不要运行(注意最后的逗号,在右括号之前, )。一个可能替代方案是:if(not(isblank(A2:A)), something, )
  • countif( something ):将根据条件计算出现的次数。
  • if(A2:D="inbox", row(A2:D))- 有趣的部分来了,因为这个公式将分配它所在行的值,如果它发现任何出现的文本“收件箱”在其中。可以举一个例子,如果我们countif()从公式中删除 ,结果将是: 在此处输入图像描述 可以看到,作为其中一部分的每个值都if(A2:D="inbox", row(A2:D))将被分配该行的值。

当我们收集最后两个公式时,我们有以下内容:

countif(if(A2:D="inbox", row(A2:A)), row(A2:A))

这意味着我们将计算值 2 出现了多少次(仅在第 2 行中存在),值 3 出现了多少次(仅在第 3 行中),依此类推


推荐阅读