Google Sheets脚本需求:勾选复选框后删除指定单元格而非整行
修改后的Google Sheets脚本实现指定单元格删除并上移
直接替换你原来的脚本即可,实现勾选B列复选框时,仅删除对应行C-T列的单元格并让下方数据上移,V列不受影响:
function deleterowsifchecked() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const ws = ss.getSheetByName("The Ultimate To Do List"); // 获取B列有效数据范围(仅到最后有内容的行) const lastRow = ws.getLastRow(); const colBData = ws.getRange(1, 2, lastRow, 1).getValues(); // 从下往上遍历,避免单元格上移后索引混乱 for (let i = lastRow - 1; i >= 0; i--) { if (colBData[i][0] === true) { // 定位当前行C列到T列的区域(C是第2列,T是第19列,共18列) const targetRange = ws.getRange(i + 1, 2, 1, 18); // 删除该区域单元格,下方对应位置数据上移填补 targetRange.deleteCells(SpreadsheetApp.DeleteShiftDirection.UP); } } }
关键改动说明
- 优化数据获取:原来的
getRange("B:B")会包含整列空行,现在用getLastRow()只处理有内容的行,提升运行效率 - 替换删除逻辑:把删除整行改成仅删除C-T列的指定区域,通过
deleteCells(UP)实现下方单元格上移,完全不触动V列 - 保留反向遍历:从最后一行往前处理,避免单元格上移后导致后续行的索引错位,确保所有勾选行都能被正确处理
使用方式:保存修改后的脚本,给工作表添加预制按钮并关联这个函数,点击按钮即可触发执行,不会自动运行。
内容的提问来源于stack exchange,提问作者Lucie
相关产品推荐
相关产品推荐

