Google 工作表 - 查询包含数组
Google Sheets - query contains array
我有一个带有名称列的范围。
我也有一个选择的名字列表。
我想要 运行 一个查询,该查询将 select 仅当名称在此列表中时来自此范围的数据:
Select C Where A "is in the selected array of names"
正确的做法是什么?
QUERY
doesn't have a concept of 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) & ")'")
哪个returns
E
1 A
2 C
假设名字数组是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))
。
如果您想在查询中提供姓名列表而不是其他范围,您可以使用 matches
完全匹配:
=QUERY(A1:C3; "SELECT C WHERE A matches 'name1|name2|name3' ")
匹配姓名的一部分:
=QUERY(A1:C3; "SELECT C WHERE A matches '.*name1.*|.*name2.*' ")
我有一个带有名称列的范围。
我也有一个选择的名字列表。
我想要 运行 一个查询,该查询将 select 仅当名称在此列表中时来自此范围的数据:
Select C Where A "is in the selected array of names"
正确的做法是什么?
QUERY
doesn't have a concept of 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) & ")'")
哪个returns
E
1 A
2 C
假设名字数组是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))
。
如果您想在查询中提供姓名列表而不是其他范围,您可以使用 matches
完全匹配:
=QUERY(A1:C3; "SELECT C WHERE A matches 'name1|name2|name3' ")
匹配姓名的一部分:
=QUERY(A1:C3; "SELECT C WHERE A matches '.*name1.*|.*name2.*' ")