我只需要复制电子表格的一部分。如果我使用值复制,超链接在其他单元格中也不起作用(在这个单元格中也是如此)。
答案 0 :(得分:0)
将范围从一张纸复制到另一张时,REF!通常会发生这种情况,因为复制的范围包括使用相对引用的公式,并且目标范围上的结果引用无效。
假设o B2你有= A1,这意味着从单元格中取出一个单元格的值,剩下一个单元格。如果将B2复制到C3,则生成的公式将为= B2,但如果将B2复制到A1,结果将为REF!因为A1没有在被推荐的位置,一个单元格向上,一个单元格离开。
修复将取决于您的公式的目的。有时候绝对引用($ A $ 1)会有效。
答案 1 :(得分:0)
一个想法是:
copyTo()
复制粘贴所需范围,并使用仅限值选项。getFormulas()
从原始工作表中获取所有公式。"=hyperlink"
字符串的每个公式的数组坐标。 "=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);
}
})
})
}
确保将工作表名称调整为您自己的名称。