如何在Google Sheets中根据指定产品编码查询匹配的最新行数据
Google Sheets 按产品code查询最新记录解决方案
以下两种方案可匹配你的需求,按需选择即可:
方案1:公式实现(无需编写代码,返回查询结果)
适用场景:需要在单独区域展示指定code的最新完整记录
前提假设:你的数据按采购周期从旧到新录入,新记录追加在旧记录下方,产品code存放于A列,第1行为表头
- 新建独立查询页,在A1单元格输入待查询的产品code作为输入项
- 在查询页A2单元格输入如下公式即可返回对应最新记录的整行数据:
=FILTER(数据页!A:Z, 数据页!A:A=A1, ROW(数据页!A:A)=MAX(FILTER(ROW(数据页!A:A), 数据页!A:A=A1))) - 参数调整说明:
- 替换公式中的
数据页为你自己的工作表名称 - 替换
A:A为你实际存放产品code的列号 - 替换
A:Z为你需要返回的数据列范围,缩小范围可提升公式运行效率
- 替换公式中的
若你的数据不是按录入顺序排序,存在新记录在上的情况,可把公式中的行号判断替换为对应采购日期列的MAX值判断即可。
方案2:脚本实现(输入code后自动定位到对应行)
适用场景:需要直接跳转定位到数据页的最新记录行,适合高频查询使用
- 打开目标表格,点击顶部菜单栏「扩展程序」-「Apps脚本」
- 删除默认生成的空代码,粘贴如下代码:
function onOpen() { const ui = SpreadsheetApp.getUi(); ui.createMenu('自定义查询') .addItem('按产品code查最新记录', 'searchLatestCode') .addToUi(); } function searchLatestCode() { const ui = SpreadsheetApp.getUi(); const response = ui.prompt('请输入要查询的产品code:'); const searchCode = response.getResponseText(); if (response.getSelectedButton() !== ui.Button.OK || !searchCode) return; // 以下参数按需修改 const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('数据页'); const codeCol = sheet.getRange('A:A').getValues(); let latestRow = 0; // 从最后一行倒序查找,第一个匹配的就是最新记录 for (let i = codeCol.length - 1; i >= 0; i--) { if (codeCol[i][0] === searchCode) { latestRow = i + 1; break; } } if (latestRow === 0) { ui.alert('未找到对应code的记录'); return; } // 自动跳转定位到目标行 sheet.setActiveRange(sheet.getRange(latestRow, 1)); SpreadsheetApp.getActiveSpreadsheet().setActiveSheet(sheet); }
- 保存项目后完成授权,刷新表格页面,顶部会新增「自定义查询」菜单,点击对应选项输入code即可自动定位到最新记录行。
内容的提问来源于stack exchange,提问作者Lizi1990
相关产品推荐
相关产品推荐

