如何实现选中单元格后复制其所在行B:D列至另一工作表?
修改后的脚本实现选中行复制功能
以下是调整后的脚本,可实现选中Sheet1中任意单元格时,自动复制该行的B:D列区域到Sheet2的指定位置:
function copypaste() { const ss = SpreadsheetApp.getActive(); const sheet1 = ss.getSheetByName('Sheet1'); const sheet2 = ss.getSheetByName('Sheet2'); // 获取当前选中单元格所在的行号 const activeRow = sheet1.getCurrentCell().getRow(); // 动态确定要复制的B:D列区域 const sourceRange = sheet1.getRange(`B${activeRow}:D${activeRow}`); // 获取Sheet2中M1指定的目标位置 const targetRangeAddress = sheet2.getRange('M1').getValue(); const targetRange = sheet2.getRange(targetRangeAddress); // 执行复制粘贴操作 sourceRange.copyTo(targetRange, SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); // 清除目标区域背景格式 targetRange.setBackground(null); // 切回Sheet1 ss.setActiveSheet(sheet1); }
关键修改说明:
- 移除了原脚本中冗余的
activate()调用:Apps Script操作单元格/区域无需先激活,直接操作对象更高效 - 动态获取选中行:通过
getCurrentCell().getRow()获取选中单元格的行号,自动生成该行的B:D列区域 - 优化变量结构:直接获取Sheet1和Sheet2对象,减少重复调用,代码可读性更强
- 保留原脚本的核心需求:从Sheet2的M1获取目标位置、粘贴后清除背景、切回Sheet1
内容的提问来源于stack exchange,提问作者Maxim
相关产品推荐
相关产品推荐

