将单行导出到新工作表而不覆盖的宏



所以标题几乎说明了一切。我有一个带有下拉列表、公式等的动态行,我想将该行的值导出到一个新的工作表中,而不覆盖上一个导出的行,这是我设法做到的(覆盖(。所以我会制作这个宏,使用它,它只会在以前的导出中粘贴所有值。有人能帮我吗?这是我的宏btw,以防有人需要。

function Export2() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A2:J2').activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('TVDB'), true);
spreadsheet.getRange('A2').activate();
spreadsheet.getRange('TV!A2:J2').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
};

您正在复制到spreadsheet.getActiveRange()-这意味着要复制到活动选择的范围

如果你想复制到第一个空行,你需要使用AppsScript方法getLastRow((修改你的代码

重要信息:

在使用方法getLastRow()和一般情况下复制图纸时,建议将这些方法应用于选定的sheet,而不是spreadsheet,以避免出现问题。

样本:

function Export2() {
var spreadsheet = SpreadsheetApp.getActive();
var originSheet = spreadsheet.getSheetByName("TV");
var destinationSheet = spreadsheet.getSheetByName('TVDB');
var lastRow = destinationSheet.getLastRow();
originSheet.getRange('A2:J2').copyTo(destinationSheet.getRange(lastRow +1, 1), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
};

我建议您花一些时间查看Apps Script文档,以便更好地了解代码,并在需要时进行修改。请注意,录制宏大多不会产生最高效、最优雅的代码。

最新更新