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

如何用Google Apps Script实现跨工作表单元格数值累加且不覆盖原有值

问题原因

你原有代码仅读取了Sheet0的数值,没有提前获取Sheet1中I4:I586区域的原有库存值,直接写入新数值自然会覆盖原有数据。

修改后可用代码

function V6() {
  const ss = SpreadsheetApp.getActive();
  const sh0 = ss.getSheetByName('Sheet0'); // 待加库存所在工作表
  const sh1 = ss.getSheetByName('Sheet1'); // 当前库存所在工作表
  const handleRows = 583; // 对应4到586行共583行数据,可根据实际范围调整

  // 分别读取待加库存和当前库存的对应区域数值
  const addStock = sh0.getRange(4, 7, handleRows, 1).getValues();
  const currentStock = sh1.getRange(4, 9, handleRows, 1).getValues();

  // 逐行累加计算新库存值
  const finalStock = currentStock.map((item, index) => {
    const addVal = Number(addStock[index][0]) || 0;
    const currentVal = Number(item[0]) || 0;
    return [currentVal + addVal];
  });

  // 写入累加后的新库存到Sheet1
  sh1.getRange(4, 9, handleRows, 1).setValues(finalStock);
  // 清空Sheet0的待加库存列
  sh0.getRange(4, 7, handleRows, 1).setValues(new Array(handleRows).fill([0]));
}

核心改动说明

  • 新增了Sheet1原有库存的读取逻辑,累加计算基于原有数值进行,不会覆盖历史数据
  • 拆分了两个工作表的读写操作,避免操作对象混淆
  • 增加了非数值兼容处理,遇到空单元格、文本内容时不会抛出错误
  • 单独实现待加库存列的清零逻辑,逻辑更清晰易维护

内容的提问来源于stack exchange,提问作者Mischa.Melkert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:15:00