如何用Google Sheets Query筛选由Expert负责的事件?
解决方案
方法一:关联专家状态后筛选
在第三个工作表的A1单元格输入以下公式,可直接关联两张表的数据并筛选出专家负责的事件:
=QUERY({Events!A:C, ARRAYFORMULA(VLOOKUP(Events!C:C, People!A:B, 2, FALSE))}, "SELECT Col1, Col2, Col3 WHERE Col4 = TRUE", 1)
- 逻辑说明:
{Events!A:C, ARRAYFORMULA(VLOOKUP(...))}:将Events表的事件数据(假设为A-C列,含事件信息与负责人)和对应的专家状态合并为虚拟数据表VLOOKUP通过负责人姓名匹配People表的Expert状态,ARRAYFORMULA实现批量处理所有行SELECT Col1, Col2, Col3 WHERE Col4 = TRUE:筛选出专家状态为TRUE的行,仅保留事件相关列,最后一个参数1表示第一行为表头
方法二:先获取专家名单再匹配事件
如果更倾向于先明确专家范围再筛选事件,可使用以下公式:
=QUERY(Events!A:C, "SELECT * WHERE Col3 IN ('"&TEXTJOIN("','", TRUE, FILTER(People!A:A, People!B:B=TRUE))&"')", 1)
- 逻辑说明:
FILTER(People!A:A, People!B:B=TRUE):从People表中筛选出所有标记为Expert的人员姓名TEXTJOIN("','", TRUE, ...):将姓名列表转换为Query语句中IN条件所需的字符串格式(如'Tom','Mary')QUERY(Events!A:C, ...):从Events表中筛选出负责人在专家名单内的所有事件
注意事项
- 确保People表的姓名列与Events表的负责人列内容完全一致(包括大小写、空格),否则会匹配失败
- 两个公式均支持动态更新:新增事件/人员、修改Expert状态时,结果会自动刷新
- 若你的表格列范围与示例不同,调整公式中的列引用(如把
A:C改为实际的列区间)
内容的提问来源于stack exchange,提问作者sande005
相关产品推荐
相关产品推荐

