Google 表格 - 查询包含数组

问题描述 投票:0回答:4

我有一个带有名称列的范围。

我还有一份选择的名单。

我想运行一个查询,仅当它的名称位于此列表内时才会从此范围中选择数据:

Select C Where A "is in the selected array of names"

这样做的正确方法是什么?

google-sheets google-sheets-query
4个回答
12
投票

假设名称数组为D2:D10;那么你可以使用查询字符串

"select C where A = '" & join("' or A = '", D2:D10) & "'"

这会创建一个长查询字符串 A = 'name' 或 A= 'another name'...

如果名称范围可变(例如,您希望 D2:D 中列出所有名称),请将 D2:D10 替换为

filter(D2:D, len(D2:D))


2
投票

QUERY
没有in的概念。

如果 A 列中有您的姓名列表,请说

  A  B  C
1 1     A
2 2     B
3 3     C

还有你要在 D1:D2 中找到的名字

  D
1 A
2 C

您可以构建一个正则表达式来匹配您想要在 E1 中查找的名称

=QUERY(C1:C3, "SELECT A WHERE A MATCHES '(" & JOIN("|", D1:D2) & ")'")

返回

  E
1 A
2 C

1
投票

如果您想在查询中提供名称列表而不是其他范围,您可以使用 matches

完全匹配:

=QUERY(A1:C3; "SELECT C WHERE A matches 'name1|name2|name3' ")

匹配姓名的一部分:

=QUERY(A1:C3; "SELECT C WHERE A matches '.*name1.*|.*name2.*' ")

0
投票

或者混合这两种方法,并设置它以便您可以使用其他过滤器...

=query(A1:A, "SELECT A,B,C WHERE (A MATCHES '("& JOIN("|", filter(D1:D, LEN(D1:D))) &")' OR C = 'Criteria' ")
© www.soinside.com 2019 - 2024. All rights reserved.