将数据从一个选项卡移动到另一个选项卡,并忽略公式将数据粘贴到最后一行



目标是,一旦我选中选项卡1中的一个框,它将把第21行到第29行的信息复制到选项卡2上。选项卡2它将找到A列为空值的第一行,并将信息粘贴到那里。LastRow((不起作用,因为我在表2中的J-K列中有公式。我猜IF语句的格式或顺序有误。

function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
var targetSheet = ss.getSheetByName("Tab 2");
var firstCell = targetSheet.getRange("A1");
if(!firstCell.isBlank()){
var firstEmptyRow = firstCell.getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow() + 1;
} else{
var firstEmptyRow = firstCell.getRow();
}
if(s.getName() == "Tab 1" && r.getColumn() == 18 && r.getValue() == true) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var target = targetSheet.getRange(firstCell);
s.getRange(row, 21, 1, numColumns).copyTo(target,{contentsOnly:true});

您想要查找A列中的第一个空白单元格

一个有用的方法是getNextDataCell((。

此方法查找包含数据的单元格和沿指定方向前进的空单元格之间的边。

样本:

var firstCell = targetSheet.getRange("A1");
if(!firstCell.isBlank()){
var firstEmptyRow = firstCell.getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow() + 1;
} else{
var firstEmptyRow = firstCell.getRow();
}

注:

isBlank((本身也可以用来查找第一个空单元格,但在您的情况下,它可能不是最优雅的方法。

最新更新