如何将电子表格中筛选后的行(含格式)复制到另一个表格
解决筛选行复制并保留格式的问题
原脚本仅复制了单元格的值,完全没有处理格式信息,所以会丢失背景色等样式。要同时保留数据和格式,需要使用copyTo()方法直接复制整行的内容与样式,具体修改如下:
修改后的脚本
var ss = SpreadsheetApp.getActive(); var sourceSheet = ss.getSheetByName("main"); var destSheet = ss.getSheetByName("目标表"); // 替换为你的目标表格名称 var dataRange = sourceSheet.getDataRange(); var totalRows = dataRange.getNumRows(); var totalCols = dataRange.getNumColumns(); // 遍历源表每一行,筛选符合条件的行 for (var rowIndex = 1; rowIndex <= totalRows; rowIndex++) { var firstCellValue = sourceSheet.getRange(rowIndex, 1).getValue().toString(); if (firstCellValue.startsWith("1")) { // 获取当前符合条件的行范围 var sourceRowRange = sourceSheet.getRange(rowIndex, 1, 1, totalCols); // 计算目标表的插入行位置 var destRowPos = destSheet.getLastRow() + 1; // 复制整行,包含所有格式(背景色、字体、对齐方式等) sourceRowRange.copyTo( destSheet.getRange(destRowPos, 1), SpreadsheetApp.CopyPasteType.PASTE_ALL, false ); } }
关键说明
- 使用
SpreadsheetApp.CopyPasteType.PASTE_ALL参数,会复制单元格的所有内容与格式,包括你重点关注的背景色、字体样式、单元格对齐方式等。 - 遍历源表每一行时,先检查第一列值是否符合条件,符合则直接复制整行到目标表的末尾,确保数据和格式完全一致。
- 如果源表数据量极大,遍历可能会有轻微延迟,但对于常规表格规模,这个方法高效且直接。
内容的提问来源于stack exchange,提问作者Henry
相关产品推荐
相关产品推荐

