计算特定字符串的唯一出现次数

计算特定字符串的唯一出现次数

我正在尝试实现一些我知道必须简单的事情,但我还没有成功找到解决方案。我的问题很简单。我试图在一个简单的表格中计算每列下“坏”或“好”的出现次数,但只计算一次:

简单表格

例如,无论 A 列下出现多少次“Bad”,A 列下的“Bad”值都应仅计算一次。

我最接近实现这一结果的一次是 =COUNTIF(G2:G9,UNIQUE(FILTER(G2:G9,G2:G9="Bad"),,TRUE))

此公式实现了我在一列中处理混合字符串的目标。它将正确地仅计算“坏”

它将正确地仅计算“坏”

但如果出现多次“Bad”则错误地返回以下值0

返回值 0

TRUE从公式中删除,最终=COUNTIF(G2:G9,UNIQUE(FILTER(G2:G9,G2:G9="Bad")))问题不但没有解决,反而引入了一个新问题,即对字符串“Bad”的多次出现进行计数:

不止一次

有人可以告诉我我做错了什么,或者我想要做的事情是否有可能吗?

答案1

我不知道结果应该采取什么形式,但最简单的获取方法是(在我看来)使用以下公式(A9复制):

=--ISNUMBER(MATCH($F9,A$1:A$8,0))

如图所示。
坏/好

答案2

您的 OP 中列出的公式不起作用,原因如下:

对于使用方法:

=COUNTIF(G2:G9,UNIQUE(FILTER(G2:G9,G2:G9="Bad"),,1))

  • 使用:从范围FILTER(G2:G9,G2:G9="Bad")返回两次。Bad
  • 使用UNIQUE():在UNIQUE()上面的公式中包装函数时返回#VALUE!错误,这是因为所述函数中使用的最后一个参数是返回TRUE -- Return items that appear exactly once两个相似的值。边注:--> TRUEand 的1意思是相同,并且OandFALSE指的是相同。
  • 使用:用它COUNTIF()包装时会返回,因为您试图在范围内找到错误,因此输出为。COUNTIF()0#VALUE!0
  • 使用不带TRUE:它返回,2因为它将值与范围相匹配,因为使用返回的数组FILTER()显示{"Bad";"Bad"}在包装时UNIQUE()它只返回一个Bad作为在范围内查找的条件G2:G9

建议使用以下公式,该公式将根据要求发挥作用:

在此处输入图片描述


单元格中使用的公式G3

=SUM(N(UNIQUE(FILTER(G2:G9,1-ISNA(XMATCH(G2:G9,{"Bad","Good"}))))<>""))

在上面的公式中,我同时包含了标准BadGood以返回所需的输出。但是,如果只Bad需要,那么

=SUM(N(UNIQUE(FILTER(G2:G9,G2:G9="Bad"))<>""))

另一种替代方法是使用:

=COUNTA(UNIQUE(FILTER(G2:G9,G2:G9="Bad")))

或者,这个也会更短一些:

对于GoodBad

=SUM(N(UNIQUE(G2:G9)={"Bad","Good"}))

仅限Bad

=SUM(N(UNIQUE(G2:G9)="Bad"))

或者对整个范围使用LAMBDA()辅助函数BYCOL()

在此处输入图片描述


对于GoodBad

=BYCOL(G2:K9,LAMBDA(α, SUM(N(UNIQUE(α)={"Bad","Good"}))))

仅限Bad

=BYCOL(G2:K9,LAMBDA(α, SUM(N(UNIQUE(α)="Bad"))))

相关内容