如何使用Apps Script根据单元格备注累加指定列数值到目标单元格
最终可实现需求的代码
function getPaid () { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheets()[0]; var range = sheet.getRange("C4:C14"); var rangeval = range.getValues(); var comments = range.getNotes(); // 初始化求和变量 var paidSum = 0; // 遍历范围内所有行 for (var i = 0; i < range.getNumRows(); i++) { // 备注匹配则累加数值,空值默认按0计算 if (comments[i][0] === "paid") { paidSum += Number(rangeval[i][0] || 0); } } // 将求和结果写入C15 sheet.getRange('C15').setValue(paidSum); }
原代码的核心问题
- 循环条件错误:
for (var i = 0; i > range.length; i++)逻辑完全错误,Range对象无length属性,需用range.getNumRows()获取总行数,判断条件应为i < 总行数才能遍历所有单元格 - 取值格式错误:
getNotes()和getValues()均返回二维数组,单列范围下需要用[i][0]才能获取对应行的备注、数值内容 - 求和逻辑错误:每次匹配到符合条件的单元格就直接覆盖C15的值,没有做累加处理,需先定义变量存储总和,遍历完成后统一赋值
内容的提问来源于stack exchange,提问作者Century Tuna
相关产品推荐
相关产品推荐

