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

Google Sheets最后一行处理需求:库存检查同步数据行转移问题

解决Google Sheets库存检查数据的转移需求

我完全懂这种被不规则数据折腾的感觉!每周追加的行式库存数据,还因为物品增减导致行长度忽长忽短,确实很难直接分析。下面给你几个实用的方案,按需选择:


方案1:把行式周数据转成按物品分组的结构(最常用)

如果你的目标是从「每周一行」改成「每个物品一行、每周数据列」的分析友好结构,用QUERY+FLATTEN的组合公式就能搞定:

假设你的原始数据从A1开始(A1是第1周第一个物品库存,B1是第1周第二个,以此类推;A2是第2周第一个),在空白单元格输入:

=ARRAYFORMULA(IFERROR(SPLIT(QUERY(FLATTEN(ROW(A1:Z)&"|"&A1:Z&"|"&COLUMN(A1:Z)), "select Col1, Col2 where Col2 is not null order by Col3, Col1", 0), "|")))

这个公式会自动把所有非空的库存数据,按「周数(行号)、库存值、物品列序号」整理排序,同一个物品的每周数据会自动归到一起。如果你的原始数据第一行是物品名称,只要调整公式里的范围就能匹配上。


方案2:自动同步最新周数据到目标区域

如果你的转移需求是把每周新追加的行自动同步到另一个工作表,用IMPORTRANGE+QUERY就能实现动态拉取:

=QUERY(IMPORTRANGE("你的表格ID", "原始数据!A:Z"), "select * where Col1 is not null order by Col1 desc limit 1", 0)

这个公式会自动抓取原始数据里的最后一行(也就是最新的周数据),要是需要同步所有历史数据,去掉limit 1就行。


方案3:用Apps Script实现自定义转移逻辑

如果公式满足不了你的复杂需求(比如要按物品名称自动匹配、动态生成统计列),可以写个简单的脚本自定义规则:

  1. 打开Google Sheets,点击「扩展程序」→「Apps脚本」
  2. 粘贴以下代码:
function transferInventoryData() {
  const sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("原始数据");
  const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("整理后数据");
  
  // 获取所有非空行的原始数据
  const sourceData = sourceSheet.getDataRange().getValues();
  const targetData = [];
  
  // 遍历每周数据行
  sourceData.forEach((row, weekIndex) => {
    // 遍历该行的每个物品库存
    row.forEach((inventory, itemIndex) => {
      if (inventory !== "") {
        // 可按需修改输出格式,比如加上物品名称列
        targetData.push([`第${weekIndex+1}周`, `物品${itemIndex+1}`, inventory]);
      }
    });
  });
  
  // 清空目标表并写入整理后的数据
  targetSheet.clearContents();
  targetSheet.getRange(1, 1, targetData.length, targetData[0].length).setValues(targetData);
}
  1. 保存并运行,授权后就能按规则转移数据。还能设置时间触发器,让它每周自动执行,完全不用手动操作。

要是你的转移需求更具体(比如要转置成特定格式、匹配已有物品名称),可以补充细节,我再帮你调整方案~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:20:04