如何基于Google Sheets布尔列自动提取指定行数据至另一工作表?
Google Sheets 自动化提取高分获得者信息方案
针对需求,这里提供两种实用方案,完全适配你的场景:
方案一:用FILTER函数快速提取(推荐,自动更新)
假设Sheet1列结构为:A=Email,B=名字,C=姓氏,G=目标得分,H=Passed?(布尔列),直接在Sheet2的A2单元格输入以下公式:
=FILTER({Sheet1!A:A, Sheet1!B:B, Sheet1!C:C, Sheet1!G:G}, Sheet1!H:H=TRUE)
- 公式会自动筛选出所有
Passed?为TRUE的行,提取你需要的邮箱、姓名、得分信息 - 只要Sheet1的数据更新(比如新增表单回复、Passed?状态变化),Sheet2的列表会自动同步,无需手动操作
- 如果姓名存储在单独的表单回复工作表(比如名为
Form Responses,A=Email,B=名字,C=姓氏),可调整公式为:
=FILTER({Sheet1!A:A, INDEX('Form Responses'!B:B, MATCH(Sheet1!A:A, 'Form Responses'!A:A, 0)), INDEX('Form Responses'!C:C, MATCH(Sheet1!A:A, 'Form Responses'!A:A, 0)), Sheet1!G:G}, Sheet1!H:H=TRUE)
该版本会通过邮箱匹配,从表单回复表拉取对应姓名。
方案二:结合INDEX+MATCH实现(匹配你的初步思路)
如果习惯用INDEX+MATCH组合,可按以下步骤操作:
- 提取符合条件的邮箱:在Sheet2的A2单元格输入
=IFERROR(INDEX(Sheet1!A:A, SMALL(IF(Sheet1!H:H=TRUE, ROW(Sheet1!H:H)-ROW(Sheet1!H1)+1), ROW(A1))), "")
- 从表单回复表匹配名字:Sheet2的B2单元格输入
=IFERROR(INDEX('Form Responses'!B:B, MATCH(A2, 'Form Responses'!A:A, 0)), "")
- 从表单回复表匹配姓氏:Sheet2的C2单元格输入
=IFERROR(INDEX('Form Responses'!C:C, MATCH(A2, 'Form Responses'!A:A, 0)), "")
- 提取得分:Sheet2的D2单元格输入
=IFERROR(INDEX(Sheet1!G:G, SMALL(IF(Sheet1!H:H=TRUE, ROW(Sheet1!H:H)-ROW(Sheet1!H1)+1), ROW(A1))), "")
- 输入完成后,选中A2:D2单元格下拉,即可填充所有符合条件的记录
- 公式中的
IFERROR用于避免无匹配结果时显示错误值,自动返回空白
注意事项
- 确保Sheet1的
Passed?列是原生布尔值(TRUE/FALSE),而非文本格式的"True"/"False",否则公式会失效 - 如果想实现整列自动填充(无需下拉),可以用
ARRAYFORMULA包裹公式,比如Sheet2的A2单元格改为:
=ARRAYFORMULA(IFERROR(INDEX(Sheet1!A:A, SMALL(IF(Sheet1!H:H=TRUE, ROW(Sheet1!H:H)-ROW(Sheet1!H1)+1), ROW(A2:A)-ROW(A2)+1)), ""))
内容的提问来源于stack exchange,提问作者Marco R.
相关产品推荐
相关产品推荐

