如何通过多条件从含重复表头的表格中提取数据?
Google Sheets 动态数据提取方案
需求明确
- 数据源为Google表单生成的动态表格,支持新增姓名、颜色的行/列
- 核心目标:匹配指定姓名+颜色组合,提取对应绿色单元格的值,需满足:
- 排除红色单元格记录
- 取该姓名对应日期列(B列)最大且非空的记录对应值
- 覆盖所有姓名/颜色组合,自动填充到目标表格
解决方案
方法1:数组公式+XLOOKUP(推荐,全动态适配)
在目标表格的首个结果单元格(如D2)输入以下公式,自动填充整列/整表:
=ARRAYFORMULA(IFERROR(XLOOKUP(ROW(A2:A)&C2:C, SORT(FILTER({ROW('数据源'!A:A)&'数据源'!C:C, '数据源'!B:B, '数据源'!D:D}, '数据源'!D:D<>"", NOT(REGEXMATCH('数据源'!D:D, "红色"))), 2, FALSE), 3, "")))
逻辑说明:
FILTER筛选出非空、非红色的有效记录,同时拼接「行号+颜色」作为唯一匹配键SORT按日期列(B列)降序排序,确保同姓名+颜色组合的最新记录排在最前XLOOKUP匹配目标表格的「姓名行号+颜色」键,返回对应绿色值ARRAYFORMULA自动适配动态新增的姓名/颜色,无需手动下拉
方法2:QUERY函数+VLOOKUP(简洁易读)
在目标单元格输入公式,可套ARRAYFORMULA实现动态填充:
=ARRAYFORMULA(IFERROR(VLOOKUP(A2:A&C2:C, QUERY('数据源'!A:D, "select A,C,D where D is not null and D != '红色' order by B desc", 1), 3, FALSE), ""))
逻辑说明:
QUERY先筛选有效记录,并按日期降序排序,确保每个姓名+颜色组合的第一条是最新记录VLOOKUP通过拼接「姓名+颜色」作为匹配键,快速定位对应值
方法3:辅助表方案(新手友好)
- 新建辅助表,提取唯一姓名和颜色:
- A1单元格:
=UNIQUE(FILTER('数据源'!A:A, '数据源'!A:A<>""))(提取所有非空姓名) - B1单元格:
=UNIQUE(FILTER('数据源'!C:C, '数据源'!C:C<>""))(提取所有非空颜色)
- A1单元格:
- 在交叉单元格(如C2)输入公式,横拉竖拉填充:
=IFERROR(INDEX('数据源'!D:D, MAX(FILTER('数据源'!ROW(D:D), '数据源'!A:A=$A2, '数据源'!C:C=B$1, '数据源'!D:D<>"", '数据源'!D:D<>"红色"))), "")
- 直接引用辅助表的结果到目标表格即可
注意事项
- 确保数据源的列对应正确:B列为日期、D列为颜色值(绿色/红色)
- 若颜色文本存在大小写差异,可添加
LOWER()统一处理,例如LOWER('数据源'!D:D)<>"红色" - 所有方案均支持动态新增姓名/颜色,无需手动调整公式范围
内容的提问来源于stack exchange,提问作者d-ron
相关产品推荐
相关产品推荐

