Google Sheet 查询:Return 所有行数据仅在不同的列中

Google Sheet Query: Return All Row Data only in Distinct Columns

我目前有一个查询 returning 特定列匹配特定条件的所有数据,但我也想防止 return 来自 column1 的重复数据。

一个 B C D
1 x y z
1 x z x
2 r z w
3 q y z
4 q t q
4 q u r

到目前为止: =QUERY(A:D, "SELECT * WHERE B = 'x' OR 'q'")

Returns:

一个 B C D
1 x y z
1 x z x
3 q y z
4 q t q
4 q r

我怎样才能同时删除 A 列中的重复项?所以它显示如下:

一个 B C D
1 x y z
3 q y z
4 q t q

有很多方法可以解决这个问题。鉴于您的确切 post 信息,它运行 A:D 而没有 headers,这是一种方法:

=ArrayFormula(UNIQUE(IFERROR(VLOOKUP(FILTER(A:A,ISNUMBER(SEARCH(B:B,"q|x"))),A:D,SEQUENCE(1,COLUMNS(A:D)),FALSE))))

FILTER 形成一个有限数组,仅包含 A:A 中的那些项目,其中 B:B 中的相应值存在于 SEARCH 条件字符串中。

VLOOKUP 查找并 return 为每个值的所有四列值,这将 return [=] 中每个相等值遇到的第一行值11=]ed A:A 个值。这将导致每个匹配行的信息完全重复。

我使用 SEQUENCE 到 return 一个数组,要求从请求的范围中获取第 1、2、3、4 列的 return。该参数可以输入为 {1,2,3,4}。但是我发现 SEQUENCE 更灵活,例如,如果在您实际的 sheet 中,您想要 12 列的 return 而不仅仅是 4.

UNIQUE 消除重复项。

当然,ArrayFormula 是必需的,因为我们正在处理一系列值。

尝试:

=ARRAY_CONSTRAIN(SORTN(QUERY({A:D, A:A&B:B}, 
 "where Col2 matches 'x|q'"), 9^9, 2, 5, 1), 9^9, 4)