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

Google Sheets:如何使用Query或Filter返回匹配两列的最新记录

Google Sheets 按多字段唯一组合提取最新记录实现方案

方案1:内置函数实现(无需代码,适合小数据量)

  • 适用前提:原始数据第一行为表头,包含Location、Nb以及用于判断记录新旧的时间/自增ID字段,原始数据工作表名称为原始数据
  • 操作步骤:
    1. 新建空白工作表作为结果输出表,第一行粘贴与原始表完全一致的表头
    2. 在结果表A2单元格输入如下公式,按回车即可自动生成所有符合要求的最新记录:
      =FILTER(SORT('原始数据'!A2:Z, XMATCH("更新时间",'原始数据'!1:1,0), FALSE), COUNTIFS(SORT('原始数据'!A:A, XMATCH("更新时间",'原始数据'!1:1,0), FALSE), '原始数据'!A:A, SORT('原始数据'!B:B, XMATCH("更新时间",'原始数据'!1:1,0), FALSE), '原始数据'!B:B, SEQUENCE(ROWS('原始数据'!A2:A)), "<="&SEQUENCE(ROWS('原始数据'!A2:A)))=1)
  • 参数调整说明:
    • 将公式中的'原始数据'替换为你自己的原始数据工作表名称
    • 将"更新时间"替换为你实际用于判断记录先后的字段名,如果用自增ID判断就替换为对应ID字段的名称
    • 若原始数据列范围固定,可将A2:Z替换为实际数据范围(如A2:Z2000),提升公式运算效率

方案2:Apps Script 自动化实现(适合大数据量,支持自动更新)

  • 操作步骤:
    1. 打开目标Google表格,点击顶部菜单栏「扩展程序」-「Apps Script」进入脚本编辑器
    2. 删除编辑器内默认的示例代码,粘贴如下代码:
function extractLatestSupplyRecords() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet();
  // 下方配置项可根据实际情况修改
  const CONFIG = {
    rawSheetName: "原始数据",
    resultSheetName: "最新物资记录",
    locationField: "Location",
    nbField: "Nb",
    orderField: "更新时间"
  }
  const rawSheet = sheet.getSheetByName(CONFIG.rawSheetName);
  let resultSheet = sheet.getSheetByName(CONFIG.resultSheetName);
  if (!resultSheet) resultSheet = sheet.insertSheet(CONFIG.resultSheetName);
  // 读取原始数据
  const rawValues = rawSheet.getDataRange().getValues();
  const header = rawValues.shift();
  // 定位字段索引
  const locIndex = header.indexOf(CONFIG.locationField);
  const nbIndex = header.indexOf(CONFIG.nbField);
  const orderIndex = header.indexOf(CONFIG.orderField);
  // 按时间倒序排序,保证最新记录在前
  rawValues.sort((a, b) => new Date(b[orderIndex]) - new Date(a[orderIndex]));
  // 按Location+Nb唯一组合去重
  const uniqueRecords = new Map();
  rawValues.forEach(row => {
    const uniqueKey = `${row[locIndex]}||${row[nbIndex]}`;
    if (!uniqueRecords.has(uniqueKey)) {
      uniqueRecords.set(uniqueKey, row);
    }
  })
  // 写入结果表
  const outputData = [header, ...Array.from(uniqueRecords.values())];
  resultSheet.clearContents();
  resultSheet.getRange(1, 1, outputData.length, outputData[0].length).setValues(outputData);
}
  1. 保存脚本项目,首次运行需要完成Google账号授权,授权后执行函数即可生成结果表
  2. 可在脚本编辑器的「触发器」页面配置自动触发规则,支持原始数据修改后自动更新结果表,无需手动执行

内容的提问来源于stack exchange,提问作者Michael Geiser

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:48:03