我需要将数据从两张纸移到一张单独的纸上。只要工作表的布局如下,我的代码即可工作:
我需要在包含Amount Total
的行上方但在包含标题的第一行下方插入数据。我认为可以通过使用脚本在Amount Total
上方添加行来实现这一点,但是我当前的代码使用getLastRow()
跳过导出工作表中的现有数据。如第二张图片所示放置Amount Total
时,此功能不起作用。我该如何实现?我现有的代码如下:
function exportData() {
var ards = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Newtownards");
var bangor = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Bangor");
var export = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Export");
var lastRow = export.getLastRow();
var nextCell = lastRow + 1;
//get values for export
var ardsRefValues = ards.getRange("B12:G12").getValues();
var ardsAmountValues = ards.getRange("B13:G13").getValues();
var bangorRefValues = bangor.getRange("B12:G12").getValues();
var bangorAmountValues = bangor.getRange("B13:G13").getValues();
for(var i = 0; i<=6; i++){
var a = ardsRefValues.join().split(',').filter(Boolean);
var b = ardsAmountValues.join().split(',').filter(Boolean);
var c = bangorRefValues.join().split(',').filter(Boolean);
var d = bangorAmountValues.join().split(',').filter(Boolean);
}//close for loop
//find length of the arrays
var aLength = a.length - 1;
var cLength = c.length - 1;
//loop through ards data arrays
for(i = 0; i<=aLength; i++){
export.getRange(nextCell, 5).setValue(a[i]);
export.getRange(nextCell, 4).setValue(b[i]);
nextCell++
}//close for loop
//loop through bangor data arrays
for(i = 0; i<=cLength; i++){
export.getRange(nextCell, 5).setValue(c[i]);
export.getRange(nextCell, 4).setValue(d[i]);
nextCell++
}//close for loop
var data = new Array();
var lastRow = export.getLastRow();
var total = 0;
for(var i = 2; i<=lastRow; i++){
var range = export.getRange(i, 4);
data = range.getValue();
total += data;
}
export.getRange(2, 7).setValue(total);
}//close function
更新:好消息是,这些工作表每周都会更新。因此,必须将总金额添加到数据最后一行的正下方