逗号分隔列表中的唯一值/多列中的唯一值

时间:2019-08-15 16:31:53

标签: regex google-sheets google-sheets-formula array-formulas google-sheets-query

我从多项调查中获得了一些Google表单数据,答案类别随时间变化。我想找出所有使用过的独特选择,然后是所有选择的计数。

计数很容易,但是我似乎无法使用我使用的任何公式来提取唯一的答案列表。

简而言之,我无法分离值并获得数据的唯一值,看起来有点像这样:

sensitivity = TP / (TP + FN)
specificity = TN / (TN + FP)

理想情况下,它看起来像这样:

A1, A2, A3, A7, A8
A2, A5, A3
A3, A7, A15,
A10
A11
A7, A19
etc.

从这里开始,我可以使用

做一个A1 A2 A3 A5 A7 A8 A10 A11 A15 A19 公式
  

countif

我制作了一个Google工作表,其中尝试了多种方法:查询,使用数组公式拆分,使用TextJoin拆分以及所有这些的组合。但我无法将他全部集中到一栏中

这是我尝试的工作表: https://docs.google.com/spreadsheets/d/1179QKxGEaDhlejm2D_opdt2TwtdUrtWrbBMCkriBpvE/edit?usp=sharing

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

=ARRAYFORMULA(UNIQUE(TRIM(TRANSPOSE(SPLIT(QUERY(REGEXREPLACE(
 FILTER(Data!A:A, Data!A:A<>""), "(,)( )([A-Z])", "♦$2$3")&"♦",,999^99), "♦")))))

0

______________________________________________________________

=ARRAYFORMULA(QUERY(TRIM(TRANSPOSE(SPLIT(QUERY(REGEXREPLACE(
 FILTER(Data!A:A, Data!A:A<>""), "(,)( )([A-Z])", "♦$2$3")&"♦",,999^99), "♦"))), 
 "select Col1,count(Col1) group by Col1 order by count(Col1) desc label count(Col1)''"))

0

答案 1 :(得分:1)

使用2个正则表达式。

第一个-
---------------------
内容:全局
查找:(?:\b(A\d*)\b,?\h*(?=[\S\s]*\b\1\b))+|(A\d*),?\h*
替换:$2

然后运行这个-
---------------------
内容:全局
查找:(?:(A\d*)(?=A))
替换:$1\r\n

完成后,按字母顺序对文本进行排序。
它将看起来像这样(取决于排序)-

A1
A2
A3
A5
A7
A8
A10
A11
A15
A19

注意-如果您的正则表达式引擎不支持先行断言,则此方法将无效。
如果您的正则表达式引擎不支持水平空白构造\h*,请使用此
代替[^\S\r\n]*