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

Google Sheets脚本问题:将指定单元格值批量添加至多单元格失败

Google Sheets 批量累加数值脚本解决方案

需求

在K3单元格输入数字后,点击按钮将该数值批量添加到以下目标单元格/区域:

  • B11:B14
  • F11:F12
  • J11:J14
  • N11:N14
  • R11:R13
  • U3

遇到的问题及原因

  1. 第一个脚本仅U3生效
    脚本代码:

    function addValue() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getActiveSheet();
      var sourceCell = sheet.getRange("K3");
      var targetCell = sheet.getRange("B11:B14");
      var targetCell = sheet.getRange("F11:F12");
      var targetCell = sheet.getRange("J11:J14");
      var targetCell = sheet.getRange("N11:N14");
      var targetCell = sheet.getRange("R11:R13");
      var targetCell = sheet.getRange("U3");
      var sourceValue = sourceCell.getValue();
      var targetValue = targetCell.getValue();
      var newValue = Number(targetValue) + Number(sourceValue);
      targetCell.setValue(newValue);
    }
    

    原因:重复给targetCell变量赋值,后面的范围会完全覆盖前面的,最终只有最后一个U3的范围被执行修改操作,其他范围根本没被处理。

  2. 合并范围触发参数错误
    错误提示:

    Error: The parameters (String,String,String,String,String,String) don't match the method signature for SpreadsheetApp.Sheet.getRange.
    

    对应的脚本:

    function addValue() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getActiveSheet();
      var sourceCell = sheet.getRange("K3");
      var targetCell = sheet.getRange("B11:B14","F11:F12","J11:J14","N11:N14","R11:R13","U3");
      var sourceValue = sourceCell.getValue();
      var targetValue = targetCell.getValue();
      var newValue = Number(targetValue) + Number(sourceValue);
      targetCell.setValue(newValue);
    }
    

    原因:getRange方法不支持同时传入多个范围字符串作为参数,这种调用方式不符合方法的语法规则,所以触发参数错误。

正确实现脚本

function addValue() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  // 获取K3的数值并转为数字类型
  const sourceValue = Number(sheet.getRange("K3").getValue());
  // 列出所有需要更新的目标范围地址
  const targetRangeList = [
    "B11:B14",
    "F11:F12",
    "J11:J14",
    "N11:N14",
    "R11:R13",
    "U3"
  ];

  // 遍历每个目标范围,逐个完成累加操作
  targetRangeList.forEach(rangeAddress => {
    const targetRange = sheet.getRange(rangeAddress);
    // 获取当前范围的所有单元格值
    const currentValues = targetRange.getValues();
    // 对每个单元格的数值进行累加计算
    const updatedValues = currentValues.map(row => 
      row.map(cell => Number(cell) + sourceValue)
    );
    // 将计算后的数值写回对应范围
    targetRange.setValues(updatedValues);
  });
}

使用步骤

  1. 打开你的Google Sheets表格,点击顶部菜单栏的工具 > 脚本编辑器
  2. 清空编辑器里的默认代码,粘贴上面的脚本
  3. 点击编辑器顶部的保存按钮,给脚本命名(比如addValue)
  4. 返回表格,点击插入 > 绘图,绘制一个按钮形状,调整样式后保存
  5. 右键绘制好的按钮,选择分配脚本,输入addValue后确定
  6. 现在在K3输入数字,点击按钮就能完成所有目标单元格的数值累加了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 20:45:08