REF! copyTo出错

问题描述 投票:1回答:2

我只需要复制电子表格的一部分。如果我使用值复制,超链接在其他单元格中也不起作用(在这个单元格中也是如此)。

google-apps-script google-sheets
2个回答
0
投票

一个想法是:

  1. 首先使用copyTo()复制粘贴所需范围,并使用仅值选项。
  2. 然后使用getFormulas()从原始工作表中获取所有公式。
  3. 然后遍历这个公式数组,得到每个包含"=hyperlink"字符串的数组坐标。
  4. 每次找到包含"=hyperlink"的公式时,请使用setFormula()将其粘贴到目标范围。

以下是这样的:

function hyperCopy() {

  var ss = SpreadsheetApp.getActive(),
      sheet1 = ss.getSheetByName("Sheet1"),
      sheet2 = ss.getSheetByName("Sheet2"),
      lastRow = sheet1.getLastRow(),
      lastCol = sheet1.getLastColumn(),
      range1 = sheet1.getRange(1,1,lastRow,lastCol),
      range2 = sheet2.getRange(1,1,lastRow,lastCol);

  range2.clear();
  range1.copyTo(range2, {contentsOnly:true});

  var formulas = range1.getFormulas();

  formulas.forEach(function(e, i) { // e for element, i for index
    e.forEach(function(f, j) {      // f neatly stands for formula

      if (f.toUpperCase().indexOf("=HYPERLINK") !== -1) {
        sheet2.getRange(i + 1, j + 1).setFormula(f);
      }

    })
  })
}

确保将工作表名称调整为您自己的名称。


0
投票

将一个范围从一张纸复制到另一张时,REF!通常会发生这种情况,因为复制的范围包括使用相对引用的公式,并且目标范围上的结果引用无效。

假设o B2你有= A1,这意味着从单元格中取出一个单元格的值,剩下一个单元格。如果将B2复制到C3,则生成的公式将为= B2,但如果将B2复制到A1,结果将为REF!因为A1没有在引用位置,一个单元格向上,一个单元格离开。

修复程序将取决于您的公式要执行的操作。有时候绝对引用($ A $ 1)会起作用。

© www.soinside.com 2019 - 2024. All rights reserved.