2016-08-04 34 views
0

我有2列的值,其中第二列包含第一列的子集。我从第一列解析部分匹配:解析列中的值,同时排除其他列中的某些值

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

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

下面是一个例子:

enter image description here

A是我们的,B是我们要放弃子集分析,C将是理想的结果:

  1. 过滤器值以排除列B的共同值
  2. 仅返回以'x'结尾的值
+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

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

如果这样的符号在您的数据得到满足,需要通过\为了逃避他们使用正则表达式。所以在这种情况下公式REGEXMATCH如果列B包含特殊符号将无法正常工作。可能的解决方案是像这样替换它们:[symbol][\symbol]。例如,为了replece ()

=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'") 
+0

也许我没有让自己清楚,我已经编辑了OP更清晰。 – skataki

+0

对不起,我仍然没有得到为什么数字250和253在列中排除。为什么104号不符合预期的结果。 –

+0

查看我正在使用的查询,我们只希望colA中后缀“x”的字符串如此,以致于104。 ColB包含colA的子集(在本例中仅为102x),但它也包含其他值。也许这并不影响解决方案,但我又是一个noob,所以我已经将它们包含在示例中以防万一! – skataki

相关问题