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

如何修改Google Sheets自定义函数实现整列数值减10%替换

修改Google Sheets Decay函数实现整列批量减10%

原函数仅支持单个单元格,核心原因是使用了getValue()和setValue()——这两个方法仅针对单个单元格操作。要实现整列批量处理,需要改用批量读写的方法,同时兼容非数值单元格避免出错。

方案1:处理选中的任意多单元格范围

这个版本支持你手动选中整列(或任意连续单元格区域),批量将数值减10%:

function Decay() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var numRange = sheet.getActiveRange();
  // 获取选中范围的所有值,返回二维数组格式
  var values = numRange.getValues();
  
  // 遍历所有单元格,仅对数值类型执行减10%计算
  var decayedValues = values.map(row => {
    return row.map(cell => {
      return typeof cell === 'number' ? cell * 0.9 : cell;
    });
  });
  
  // 批量写入计算后的数据
  numRange.setValues(decayedValues);
  SpreadsheetApp.flush();
}

方案2:固定处理A列(无需手动选中)

如果需要每次都自动处理A列所有有数据的单元格,用这个版本:

function DecayColumnA() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // 自动获取A列从A1到最后一个非空单元格的范围
  var numRange = sheet.getRange('A1:A' + sheet.getLastRow());
  var values = numRange.getValues();
  
  // 处理A列的每个单元格
  var decayedValues = values.map(row => {
    return [typeof row[0] === 'number' ? row[0] * 0.9 : row[0]];
  });
  
  numRange.setValues(decayedValues);
  SpreadsheetApp.flush();
}

使用步骤

  1. 打开目标Google表格,点击顶部菜单「扩展程序」>「Apps脚本」
  2. 删除原有代码,粘贴上述任意一个版本的代码
  3. 点击脚本编辑器顶部的「保存」按钮,确认函数名称
  4. 返回表格:
    • 方案1:选中要处理的整列/单元格区域,点击「扩展程序」>「Apps脚本」>「Decay」运行
    • 方案2:直接点击「扩展程序」>「Apps脚本」>「DecayColumnA」运行
  5. 首次运行需要授权,按照页面提示完成权限验证即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 06:46:04