如何在Google Sheets中基于派生数据去重并实现跨表统一排序?
问题描述
- 将Google表单关联至表格,响应数据按类别筛选至不同工作表
- 筛选时将表单提交时间转换为仅日期(不含时分秒),用
UNIQUE()确保同一链接单日多次提交仅显示1条,不同日期可重复显示 - 分表作为审核表,通过数组
{}将5个表的数据合并至另一工作表,再用另一表格通过IMPORTRANGE()展示合并表数据 - 现状:各表可单独按最新日期(末行在上)排序,但无法实现跨表整体按最新日期排序;保留原始时间戳会导致单日重复数据,完全去重不可行,求解决建议
原始表单响应数据
| Links1_Submitted | Links1_Link | Links2_Submitted | Links2_Link | Links3_Submitted | Links3_Link |
|---|---|---|---|---|---|
| 9/26/2022 12:00:00 | Links1_Link1 | 9/26/2022 12:05:00 | Links2_Link1 | 9/26/2022 12:10:00 | Links3_Link1 |
| 9/26/2022 12:45:00 | Links1_Link2 | 9/26/2022 12:15:00 | Links2_Link2 | 9/26/2022 12:20:00 | Links3_Link2 |
| 9/26/2022 12:55:00 | Links1_Link3 | 9/26/2022 12:35:00 | Links2_Link3 | 9/26/2022 12:25:00 | Links3_Link3 |
| 9/26/2022 12:50:00 | Links2_Link4 | 9/26/2022 12:30:00 | Links3_Link4 | ||
| 9/26/2022 12:40:00 | Links3_Link5 | ||||
| 9/26/2022 12:41:00 | Links3_Link5 |
各分表处理公式及结果
Links1分表
公式:=UNIQUE({ARRAYFORMULA(TO_DATE(DATEVALUE(A2:A4))), B2:B4})
结果:
| Status | Submitted | Link |
|---|---|---|
| Status1 | 9/26/2022 | Links1_Link1 |
| Status2 | 9/26/2022 | Links1_Link2 |
| Status1 | 9/26/2022 | Links1_Link3 |
Links2分表
公式:=UNIQUE({ARRAYFORMULA(TO_DATE(DATEVALUE(C2:C5))), D2:D5})
结果:
| Status | Submitted | Link |
|---|---|---|
| Status1 | 9/26/2022 | Links2_Link1 |
| Status2 | 9/26/2022 | Links2_Link2 |
| Status1 | 9/26/2022 | Links2_Link3 |
| Status2 | 9/26/2022 | Links2_Link4 |
Links3分表
公式:=UNIQUE({ARRAYFORMULA(TO_DATE(DATEVALUE(E2:E7))), F2:F7})
结果:
| Status | Submitted | Link |
|---|---|---|
| Status1 | 9/26/2022 | Links3_Link1 |
| Status2 | 9/26/2022 | Links3_Link2 |
| Status1 | 9/26/2022 | Links3_Link3 |
| Status2 | 9/26/2022 | Links3_Link4 |
| Status1 | 9/26/2022 | Links3_Link5 |
当前尝试的排序公式
=SORT({SORT({A11:C}, ROW(A11:C), FALSE); SORT({E11:G}, ROW(E11:G), FALSE); SORT({I11:K}, ROW(I11:K), FALSE)}, 2, FALSE)
解决建议
方案1:合并后统一去重+排序
跳过分表单独排序步骤,直接合并分表已处理好的数据,完成去重后按日期倒序排列:
=SORT(UNIQUE({ Links1!A:C; Links2!A:C; Links3!A:C; Links4!A:C; Links5!A:C }), 2, FALSE)
- 说明:
UNIQUE()会保留「链接+日期」的唯一组合,符合需求;SORT()按第2列(日期)倒序,实现跨表整体最新日期在前。
方案2:保留审核状态,合并后直接排序
如果分表的Status列是手动维护的审核状态,可直接合并分表完整数据后排序:
=SORT({ Links1!A:C; Links2!A:C; Links3!A:C; Links4!A:C; Links5!A:C }, 2, FALSE)
- 说明:分表已通过
UNIQUE()处理重复数据,合并后无需再次去重,直接按日期列倒序即可。
方案3:从原始数据直接处理(减少中间分表)
若分表仅用于分类筛选,可直接从表单响应表提取数据,一次性完成分类、日期转换、去重、合并排序:
=SORT(UNIQUE({ // 处理Links1类数据,替换xxx为实际状态规则 ARRAYFORMULA(IF(A2:A<>"", "Status"&xxx, "")), ARRAYFORMULA(TO_DATE(DATEVALUE(A2:A))), B2:B; // 处理Links2类数据 ARRAYFORMULA(IF(C2:C<>"", "Status"&xxx, "")), ARRAYFORMULA(TO_DATE(DATEVALUE(C2:C))), D2:D; // 其他分类依次类推 }), 2, FALSE)
- 说明:减少分表维护成本,从源头处理避免分表操作带来的排序问题。
内容的提问来源于stack exchange,提问作者user19120926
相关产品推荐
相关产品推荐

