Regex 逗号分隔列表中的唯一值/多列中的唯一值
我从几次调查中得到了一些谷歌表格数据,这些调查的答案类别随着时间的推移而变化。我想找出所有使用过的独特选择,然后是所有选择的计数 计数将很容易,但我似乎无法用我使用的任何公式提取出唯一的答案列表 简单地说,我不能分离这些值并为我的数据获取唯一的值,这看起来有点像这样:Regex 逗号分隔列表中的唯一值/多列中的唯一值,regex,google-sheets,google-sheets-formula,array-formulas,google-sheets-query,Regex,Google Sheets,Google Sheets Formula,Array Formulas,Google Sheets Query,我从几次调查中得到了一些谷歌表格数据,这些调查的答案类别随着时间的推移而变化。我想找出所有使用过的独特选择,然后是所有选择的计数 计数将很容易,但我似乎无法用我使用的任何公式提取出唯一的答案列表 简单地说,我不能分离这些值并为我的数据获取唯一的值,这看起来有点像这样: 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 理想情况下,它应该是这样的:
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
理想情况下,它应该是这样的:
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
从这里,我可以用
连接(“*”,A1,“*”)
我制作了一个谷歌表格,在那里我尝试了许多方法:查询、使用数组公式拆分、使用TextJoin拆分以及所有这些方法的组合。但我不能把他的全部都放在一个专栏里
以下是我的尝试表:
任何帮助都将不胜感激 =ARRAYFORMULA(唯一)(修剪)(转置)(拆分)(查询)(REGEXREPLACE(
=ARRAYFORMULA(UNIQUE(TRIM(TRANSPOSE(SPLIT(QUERY(REGEXREPLACE(
FILTER(Data!A:A, Data!A:A<>""), "(,)( )([A-Z])", "♦$2$3")&"♦",,999^99), "♦")))))
过滤器(数据!A:A,数据!A:A“”),“(,)()([A-Z]),”♦$2$3")&"♦",,999^99), "♦")))))
______________________________________________________________
=ARRAYFORMULA(查询(TRIM)转置(SPLIT)查询(REGEXREPLACE(
过滤器(数据!A:A,数据!A:A“”),“(,)()([A-Z]),”♦$2$3")&"♦",,999^99), "♦"))),
“选择列1,按列计数(列1)分组按列排序(列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]*
谢谢!因此,我理解大部分内容,但您能否向我解释一下查询部分……代码的这一部分是如何工作的?&”♦",,999^99@khabibul35当然。999^99只是一个大数字。可以是1000000或9999之类的任何大数字…如果太小,问题就来了-那么将所有行合并到一个单元格中的查询技巧将失败。正如前面提到的,在将所有行合并到一个单元格中后,我们需要添加&“♦“如此拆分的每一行都将正确地在需要的地方剪切字符串