如何使用.setFormula在vlookup中插入具有相对引用的公式?

时间:2019-03-26 18:32:27

标签: google-apps-script

我正在使用以下脚本来: 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。任何帮助将不胜感激!

0 个答案:

没有答案