2016-08-04 32 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

相關問題