Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 逗号分隔列表中的唯一值/多列中的唯一值_Regex_Google Sheets_Google Sheets Formula_Array Formulas_Google Sheets Query - Fatal编程技术网

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之类的任何大数字…如果太小,问题就来了-那么将所有行合并到一个单元格中的查询技巧将失败。正如前面提到的,在将所有行合并到一个单元格中后,我们需要添加&“♦“如此拆分的每一行都将正确地在需要的地方剪切字符串