我正在使用以下脚本来: 1.从另一张纸复制数据(有效!) 2.并排插入三个公式(适用!) 3.使公式中的单元格引用相对,以便在第2行中引用I2,在第3行中引用I3,依此类推。(不起作用)
目前,它适用于第一次调试,但是当我为下一组数据运行脚本时,它再次从第2行开始。我知道它是用这种方式键入的,但是我想相对于它所在的行进行单元格引用。
我不是程序员,而其中大多数都是来自StackOverflow的有用人员。我需要I引用相对于它所在的行,而A引用也要这样做。
function CopyDataToNewFile2() {
const source = SpreadsheetApp.openById('1WYXp-S5XoegSnzzC9uRao8uPCyJ6UxNQgOGf3c7DQO0').getSheetByName('Outcome'); // sss = source spreadsheet
const destination= SpreadsheetApp.openById('1sX6VTyedVLBL57EMSuD7cqUwe9GzoCRajLZhA1ZBJ3Q');
const target = destination.getSheetByName('Final');
if (!source || !target)
throw new Error("Missing required worksheets (sheet names not found)");
const dataToCopy = source.getDataRange().getValues();
dataToCopy.shift(); // remove header row.
const startRow = target.getLastRow() + 1;
const numRows = dataToCopy.length;
const numColumns = dataToCopy[0].length;
target
.getRange(startRow, 1, numRows, numColumns)
.setValues(dataToCopy)
.offset(0, numColumns, numRows, 1) // offset is from the top-right cell of the range
.setFormula('=vlookup($I2,IMPORTRANGE("https://docs.google.com/spreadsheets/d/1f7_unFqRkI6O2EHBLsNGLRCH5j9rlEXBdVnRLTgS_lM/edit#gid=1203869430","Source_Hours!A:B"),2,false)/$A2')
.offset(0,1,numRows,1)
.setFormula('=vlookup($I2,IMPORTRANGE("https://docs.google.com/spreadsheets/d/1f7_unFqRkI6O2EHBLsNGLRCH5j9rlEXBdVnRLTgS_lM/edit#gid=1203869430","Copy of Other Time Not Included in WLI%!A:B"),2,false)')
.offset(0,1,numRows,1)
.setFormula('=sum($AO2,$AN2)');
}
如果要复制172行数据,则第一轮复制是准确的。一旦通过再次运行脚本复制了另外172行,它仍然仅引用I2-I172和A2-A172。任何帮助将不胜感激!