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

如何在Google Sheets中批量自动计算对应行红色单元格之和

批量求和每行红色单元格到对应绿色单元格的方法

方法一:自定义函数(自动更新)

这种方法适合后续红色单元格内容或颜色变化时,自动同步求和结果:

  • 打开Google Sheets,点菜单栏「扩展程序」→「Apps Script」进入脚本编辑器
  • 删除默认代码,粘贴下面的脚本:
function SUMBYCOLOR(range, colorCell) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var rangeValues = range.getValues();
  var color = colorCell.getBackground();
  var sum = 0;
  
  for (var i = 0; i < rangeValues.length; i++) {
    for (var j = 0; j < rangeValues[0].length; j++) {
      if (range.getCell(i+1, j+1).getBackground() == color) {
        sum += rangeValues[i][j] || 0;
      }
    }
  }
  return sum;
}
  • 保存脚本(给项目随便起个名字,比如「颜色求和工具」),关闭编辑器回到表格
  • 在第一行绿色单元格输入公式:=SUMBYCOLOR(B2:D2, B2)(这里B2:D2是该行红色单元格的范围,B2是任意一个红色单元格作为颜色参考,你要根据自己表格的列调整)
  • 选中这个绿色单元格,鼠标按住右下角的填充柄往下拖,就能批量把公式应用到所有行

方法二:一次性脚本填充(适合固定数据)

如果只是需要一次性计算填充,后续不需要自动更新,用这个更高效:

  • 同样打开Apps Script编辑器,粘贴下面的脚本:
function fillSumByRedColor() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var dataRange = sheet.getDataRange();
  var bgColors = dataRange.getBackgrounds();
  var values = dataRange.getValues();
  var redColor = "#ff0000"; // 你的红色如果不是这个,换成对应十六进制代码
  var greenCol = 5; // 假设绿色单元格在第5列,改成你实际的列号(A=1,B=2...)
  
  for (var row = 0; row < bgColors.length; row++) {
    var sum = 0;
    // 遍历每行除绿色列外的单元格
    for (var col = 0; col < greenCol - 1; col++) {
      if (bgColors[row][col] == redColor) {
        sum += values[row][col] || 0;
      }
    }
    sheet.getRange(row+1, greenCol).setValue(sum);
  }
}
  • 保存后点编辑器顶部的运行按钮,授权权限后等待运行完成,所有绿色单元格会自动填入求和结果

小提示:如果不知道红色单元格的十六进制代码,可以选中一个红色单元格,在脚本编辑器里临时写个Logger.log(SpreadsheetApp.getActiveSheet().getActiveCell().getBackground()),运行后看日志就能拿到颜色代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:07:22