如何将单元格内容累加至另一单元格后自动清空原单元格?
解决方案
Google Sheets 修复后脚本
你原来的脚本触发逻辑和偏移规则不符合需求,同时未处理非数值输入的异常,才会出现#NUM!报错。以下是适配你需求的代码:
场景1:固定在A1输入,数值累加至B1
function onEdit(e) { // 仅监听A1单元格的编辑 if (e.range.getA1Notation() === 'A1') { const inputVal = Number(e.value); // 仅当输入为有效数字时执行累加 if (!isNaN(inputVal)) { const targetCell = e.source.getRange('B1'); const targetVal = Number(targetCell.getValue()) || 0; targetCell.setValue(inputVal + targetVal); } // 清空输入单元格 e.range.clearContent(); } }
场景2:A列任意行输入,数值累加至同行B列
function onEdit(e) { // 仅监听A列的编辑 if (e.range.columnStart === 1) { const inputVal = Number(e.value); if (!isNaN(inputVal)) { const targetCell = e.range.offset(0, 1); const targetVal = Number(targetCell.getValue()) || 0; targetCell.setValue(inputVal + targetVal); } e.range.clearContent(); } }
生效步骤
- 打开你的Google Sheets表格,点击顶部菜单栏「扩展程序」→「Apps脚本」
- 删除原有代码,粘贴上述适配你场景的代码
- 点击保存按钮,关闭Apps脚本页面,刷新表格即可生效
Excel 实现方案(可选)
如果切换到Excel,用VBA即可实现相同效果,代码如下:
Private Sub Worksheet_Change(ByVal Target As Range) ' 以固定A1输入累加至B1为例 If Target.Address = "$A$1" Then Application.EnableEvents = False If IsNumeric(Target.Value) Then Range("B1").Value = Range("B1").Value + Target.Value End If Target.ClearContents Application.EnableEvents = True End If End Sub
生效步骤
- 打开Excel文件,按
Alt+F11调出VBA编辑器 - 左侧项目面板双击你要实现功能的工作表名称
- 粘贴上述代码,关闭VBA编辑器即可使用
内容的提问来源于stack exchange,提问作者BlackShad
相关产品推荐
相关产品推荐

