You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Google Apps Script提取Google Sheets指定列唯一数据及对应最新日期值

解决Google Sheets提取唯一值并保留最新日期对应行的问题

我明白你需要处理一个35列、千行级的表格,核心需求是按第5列去重,同时保留每个唯一值对应的最新日期(第4列)的完整行数据。下面给你两种实用的方法,都是Google Sheets原生函数,不需要脚本:


方法一:用SORT+SORTN一键生成结果(推荐,操作简单)

这个方法通过先排序再筛选分组,直接输出最终结果,适合快速处理:

在新工作表的A1单元格输入以下公式,记得把'原工作表名称'替换成你实际的源表名称(比如'Sheet1'):

=SORTN(SORT('原工作表名称'!A1:AI1000, 4, FALSE, 5, TRUE), 9^9, 2, 5, TRUE)

参数解释:

  • SORT('原工作表名称'!A1:AI1000, 4, FALSE, 5, TRUE):先对源数据排序——按第4列(日期)降序(保证每个分组里最新日期的行排在最前面),再按第5列升序(方便后续分组)。
  • SORTN(..., 9^9, 2, 5, TRUE):对排序后的结果进行分组筛选——9^9表示取足够多的行(覆盖你的千行数据),2表示按第5列分组,每组只保留1行,最后按第5列排序输出。

方法二:分步构建(适合需要单独查看中间结果的场景)

如果你需要更清晰地看到每个步骤的结果,可以分三步操作:

  1. 提取第5列的唯一值
    在新工作表的A1单元格输入:
=UNIQUE('原工作表名称'!E:E)  // E列对应第5列,根据实际列调整
  1. 获取每个唯一值对应的最新日期
    在新工作表的B1单元格输入,然后向下拖曳填充:
=MAXIFS('原工作表名称'!D:D, '原工作表名称'!E:E, A1)  // D列对应第4列日期
  1. 匹配对应完整行的数据
    在新工作表的C1单元格输入(对应源表的A列),然后向右、向下拖曳填充到所有列:
=INDEX('原工作表名称'!A:A, MATCH(1, ('原工作表名称'!E:E=A1)*('原工作表名称'!D:D=B1), 0))

提示:如果拖曳时公式引用出错,可以用绝对引用锁定源表范围,比如把'原工作表名称'!E:E改成'原工作表名称'!$E:$E。


注意事项:

  • 如果你的数据是动态更新的,可以把公式里的固定范围A1:AI1000改成动态范围,比如A:AI,但大范围引用可能会影响表格性能,建议用实际数据的边界范围。
  • 如果第5列有空白值,UNIQUE函数会保留空白,你可以用FILTER先去掉空白行,比如=UNIQUE(FILTER('原工作表名称'!E:E, '原工作表名称'!E:E<>""))。

内容的提问来源于stack exchange,提问作者J.Doe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:12:20