如何在Google Sheets中关联两个工作表的行并查询匹配数据
Google Sheet 跨表提取订阅类型为1的关联用户名方案
核心思路
虽然QUERY函数仅支持单表查询,但可以通过构造虚拟联合表或者组合FILTER、MATCH函数实现跨表关联查询,不需要额外脚本操作。
方案1:组合FILTER+MATCH(公式更简洁,推荐)
直接在第三张工作表你需要输出结果的起始单元格输入以下公式即可:
=FILTER(Page1!A:A, ISNUMBER(MATCH(Page1!B:B, FILTER(Page2!A:A, Page2!B:B=1), 0)))
公式逻辑说明:
- 内层
FILTER(Page2!A:A, Page2!B:B=1):先从账户表(Page2)中筛选出所有subscription_type=1的account_id列表 MATCH(Page1!B:B, 上述筛选结果, 0):匹配用户表(Page1)中的account_id是否属于订阅类型为1的账户列表- 外层
FILTER(Page1!A:A, ISNUMBER(匹配结果)):提取所有匹配成功的对应用户名
方案2:使用QUERY(符合单表查询限制要求)
如果要求必须使用QUERY函数实现,可以先将两张表的关联字段拼接为虚拟单表后再查询,公式如下:
=QUERY({Page1!A:B, Page2!A:B}, "SELECT Col1 WHERE Col4=1 AND Col2=Col3", 1)
公式逻辑说明:
{Page1!A:B, Page2!A:B}:将两张表的列横向拼接,生成一张4列的虚拟临时表:- Col1:Page1的用户名(name)
- Col2:Page1的账户ID(account_id)
- Col3:Page2的账户ID(account_id)
- Col4:Page2的订阅类型(subscription_type)
- QUERY语句筛选出订阅类型为1、且两个表账户ID相等的行,提取对应的用户名
- 公式末尾的
1表示原表有表头,自动跳过第一行;如果你的表格没有表头,改为0即可
常用扩展调整
- 需要对结果去重:在公式外层嵌套
UNIQUE函数即可,例:=UNIQUE(FILTER(...)) - 需要过滤空值:在筛选条件中增加对应判断即可,例:
FILTER(Page1!A:A, Page1!A:A<>"", 其他条件)
内容的提问来源于stack exchange,提问作者citizen
相关产品推荐
相关产品推荐

