这是我工作的代码-我尝试了许多不同的组合,但没有一个给我想要的结果-您能解释一下为什么我的代码不正确吗?
代码正在对行进行迭代以查找大于0的行-如果是,则将行复制到目标工作表-但是我得到了错误的行?
function try2() {
var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Final');
var lastrow = sheet2.getLastRow()+1;
var target = sheet2.getRange(lastrow,1,1,5);
var data = sheet1.getRange('E1:E500').getValues();
for(var i=1; i< data.length; i++) {
Logger.log(i)
if (data[i] > 0) {
Logger.log(data[i])
sheet1.getRange(i, 1, 1, 5).copyTo(target);
}
}
}
我更新了代码,使for循环中的lastrow和target变量仍具有不希望的结果。
function try2() {
var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Final');
var data = sheet1.getRange('E1:E500').getValues();
for(var i=1; i< data.length; i++) {
var lastrow = sheet2.getLastRow()+1;
var target = sheet2.getRange(lastrow,1,1,5);
//Logger.log(i)
if (data[i] !== "") {
Logger.log(data[i])
sheet1.getRange(i, 1, 1, 5).copyTo(target);
}
}
}
最佳答案
需求:
将数据从一张纸复制到另一张纸的下一个空闲行。
解:
function try2() {
var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Final');
var targetLastRow = sheet2.getLastRow() + 1;
var dataLastRow = sheet1.getLastRow();
var dataRange = sheet1.getRange(1,5,dataLastRow);
var data = dataRange.getValues();
for(var i = 0; i < data.length; i++) {
if (data[i]) {
sheet1.getRange(i+1, 1, 1, 5).copyTo(sheet2.getRange(targetLastRow+i,1));
}
}
}
说明:
此脚本将遍历第一张工作表E列中的所有行,并将所有非空白的行复制到工作表“最终”。通过使用
dataLastRow
获取数据。您可以节省定义范围E1:E500
的时间,该脚本现在将仅获得运行副本所需的行数,而在运行for
循环之前,无论如何,该脚本将运行500次。数据被复制到
targetLastRow+i
,这是工作表“ Final”的下一个可用行,每次循环完成时加1。关于javascript - 如果第5列不是空白,则将行复制到目标表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56583426/