根据 A 列中的条件计算 B 列中以逗号分隔的唯一值

Count unique comma-separated values in column B based on criteria in column A

如果 A 列中的数字大于(或小于)X,我如何列出和计算唯一的逗号分隔值(下例中的 B 列)?换句话说,我如何将下面的 table...

   Day   |          Fruits
+--------|--------------------------+
         |
    20   |   Apple, Banana, Pearl
         |
    24   |   Apple, Pearl
         |
    32   |   Banana, Pearl
         + 

...进入此,条件为:Day < 28.

  Fruit    |   Frequency
+----------|---------------+
           |
  Apple    |       2
           |
  Pearl    |       2
           |
  Banana   |       1
           +

@AdamL 在 this question 中提出的解决方案非常接近我想要实现的目标,但我不知道如何根据另一列的标准列出值。以下是 Adam 的想法:

=ArrayFormula(QUERY(TRANSPOSE(SPLIT(JOIN(",",A:A),",")&{"";""}),"select Col1, count(Col2) group by Col1 label count(Col2) ''",0))

考虑第 'A' 列作为天数,第 'B' 列作为水果,第 1 行作为 headers,AdamL 的公式稍作调整即可为您工作,如下所示:

=ArrayFormula(QUERY(TRANSPOSE(SPLIT(JOIN(",",B2:B),", ",True)&{"";""}),"select Col1, count(Col2) group by Col1 label count(Col2) ''",0))

希望这能解决您的问题。

使用:

=ARRAYFORMULA(QUERY(SPLIT(FLATTEN(
 IF(IFERROR(SPLIT(B2:B, ","))="",,A2:A&"♦"&TRIM(SPLIT(B2:B, ",")))), "♦"),
 "select Col2,count(Col2) 
  where Col1 < 28 
    and Col1 is not null 
  group by Col2 
  label count(Col2)''"))

我认为先在 A 列上筛选然后拆分更容易一些:

=ArrayFormula(query(flatten(split(filter(B2:B,A2:A<28,A2:A<>""),",")),"select Col1,count(Col1) where Col1 is not null group by Col1 label Col1 'Fruit',Count(Col1) 'Count'"))