我正在制作电子表格以格式化Google表单的响应。但是,该表格将每周发送一次;理想情况下,我想将表单响应导入到此电子表格中,让格式化的数据表现在使用此新的响应表,而不是旧的响应表,而不必更新数据表中的公式。但是,如果我尝试通过将新的数据表重命名为旧的数据表来做到这一点,它将保留旧的数据表引用并在所有公式中更新其名称。
我没有从一些Google搜索中找到任何解决方案。有一个简单的方法可以解决此问题吗?
编辑:here是一个示例电子表格。理想情况下,我希望从“新表”而不是旧表中检索“格式表”中的数据。但是,我不想更改“格式表”中的所有公式以反映这一点,因为这是我经常进行的过渡。不幸的是,重命名工作表会保留参考。
答案 0 :(得分:2)
Formatting Sheet
中的新值来使用工作表Old Sheet
上的值。如果我的理解正确,那么这个答案如何?请认为这只是几个可能的答案之一。
根据您的情况,即使更改了工作表名称,工作表ID也不会更改。这样,公式将使用旧值。我认为您的问题的原因是这样的。在此答案中,为了实现您的目标,使用了Google Apps脚本。
示例脚本的流程如下。
New Sheet
和New Sheet
的工作表对象,它们分别是源工作表和目标工作表。Old Sheet
。
Old Sheet
。destinationSheet.copyTo(ss).setName(destinationSheet.getName() + "_backup_" + new Date().toISOString());
复制到New Sheet
。以此替换值。在Old Sheet
,使用新值。请复制以下示例脚本并将其粘贴到共享电子表格的脚本编辑器中。并运行Formatting Sheet
。
myFunction()
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = ss.getSheetByName("New Sheet");
var destinationSheet = ss.getSheetByName("Old Sheet");
// Backup "Old Sheet".
destinationSheet.copyTo(ss).setName(destinationSheet.getName() + "_backup_" + new Date().toISOString());
// Put values from "New Sheet" to "Old Sheet"
sourceSheet.getDataRange().copyTo(destinationSheet.getRange(1, 1));
}
的脚本时,您可以在myFunction()
的表上看到由新值计算的结果。