从列中解析值,同时从其他列中排除某些值

时间:2016-08-04 10:54:06

标签: google-sheets duplicates spreadsheet formulas

我有2列值,其中第2列包含第1列的子集。我正在解析第一列的部分匹配:

=query(A:A, "select A where A ends with 'x'")

工作正常。如何修改它以排除共享值?

以下是一个例子:

enter image description here

A是我们要解析的地方,B是我们想要丢弃的子集,C是期望的结果:

  1. 过滤值以排除B列的常见值
  2. 仅返回以' x'
  3. 结尾的值

1 个答案:

答案 0 :(得分:0)

修改

要解决此问题,您首先可能需要从列B中排除值,然后查询结果以仅匹配模式'%x'。试试这个公式:

=QUERY(FILTER(A:A,REGEXMATCH(A:A,JOIN("|",FILTER(B:B,B:B<>"")))=false), "select Col1 where Col1 like '%x'")

编辑#2

正则表达式的{p> Special symbols\ + * ? [ ^ ] $ ( ) { } = ! < > | : -

如果数据中符合此类符号,则需要\转义它们才能使用正则表达式。因此,如果列B包含特殊符号,则此情况下的公式REGEXMATCH将无法正常工作。可能的解决方案是将其替换为:[symbol][\symbol]。例如,要补充()

=REGEXREPLACE(text ;"(\(|\)|\*)";"\\$1")

尝试在C列中使用此公式来获得结果:

=QUERY(FILTER(A:A,REGEXMATCH(A:A, REGEXREPLACE( JOIN("|",FILTER(B:B,B:B<>""));"(\(|\)|\*)";"\\$1"))=false), "select Col1 where Col1 like '%x'")

原始回答

可能正在使用not关键字:

=query(A:A, "select A where not A ends with 'x'")

与:

相同
=query(A:A, "select A where not A like '%x'")