问题:
当IMPORTRANGE用于从不同的电子表格中提取数据时,原始电子表格中包含包含 VLOOKUP 的公式的单元格通常(但不总是)返回#N/A (ERROR: Did not find value 'xxx' in VLOOKUP evaluation). 在原始表中,公式计算正确并显示了一个值。这并不总是发生,有时它确实会引入正确的值。
意图:
要从不同的电子表格中获取数据,请将它们组合到不同的电子表格中并对其进行一些计算。然后将此计算电子表格(或多个计算电子表格)中的信息提取到报告电子表格中,以进行进一步的计算和格式化。
设置:
有几个源数据电子表格,dataspreadsheet1比如dataspreadsheet2和dataspreadsheet3。创建一个计算电子表格 ( calcspreadsheet),在每个数据电子表格中创建一个副本,并分别sheet1命名这些工作表和。用于此的语句创建如下:where
is a sheet in ,其中包含相应列中的名称、类型和 ID。datasheet1datasheet2datasheet3IMPORTRANGEimportrange(+VLOOKUP("dataspreadsheet1",filelist!A1:C1000,3,FALSE),"sheet1!a1:Z1000")filelist!A1:C1000calcspreadsheet
然后将这些工作表中的每一个中的值datasheet1-3用于另一个工作表中的计算,calcsheet1在calcspreadsheet. 因为这样做的主要目标是从 3 中添加每日值dataspreadsheets,但这些值sourcesheets在同一行上并不都具有相同的数据,因此VLOOKUP再次使用 a 以确保添加日期使用该行作为日期,datasheet1-3而不管其行号。例如VLOOKUP($A11,'datasheet1'!$A:$P,4) + VLOOKUP($A11,'datasheet2'!$A:$P,4) + VLOOKUP($A11,'datasheet3'!$A:$P,4),其中 A 列是所有工作表中的日期列。
这似乎工作正常,虽然在打开calcspreadsheet时可能需要很长时间才能完成更新,在此期间#N/A会显示很多 's。最终它还是正确的。
当reportspreadsheet创建 a 时会出现问题,然后使用IMPORTRANGE调用从中提取信息calcsheet1以便能够使用它。这通常但并非总是会导致一开始就出现问题状态。这里的IMPORTRANGE调用的reportspreadsheet生成方式与calcspreadsheet: =importrange(+VLOOKUP(calc!B1,sheetcodes!A1:C3000,3,FALSE),"sheet1!a1:Z1000")wherecalc!B1包含源电子表格的名称(在此calc将是 'calcspreadsheet' 并sheetcodes!A1:C3000再次包含带有Name,Type和Id在相应列中的工作表列表)中的调用类似
我尝试过的解决方法:
我确实注意到IMPORTRANGE在不包含的单元格上效果更好VLOOKUP所以我试图将 的内容复制calcsheet到另一个表中calcspreadsheet,调用exportsheet但只有值在那里,而不是公式,然后IMPORTRANGE在这个上使用exportsheet。使用的复制脚本如下:
function exportPrep() {
// Get the active spreadsheet and the active sheet
//var ss = SpreadsheetApp.getActiveSpreadsheet();
//var sheet = ss.getSheetByName("stream");
//sheet.activate();
var source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("calcsheet");
var sourceDataRange = source.getDataRange();
var sourceSheetValues = sourceDataRange.getValues();
var sourceRows = sourceDataRange.getNumRows();
var sourceColumns = sourceDataRange.getNumColumns();
var destination = SpreadsheetApp.getActiveSpreadsheet();
SpreadsheetApp.setActiveSheet(destination.setActiveSheet("exportsheet"));
destination.getDataRange().offset(0, 0, sourceRows, sourceColumns).setValues(sourceSheetValues);
}
这似乎可行,但不幸的是,用于将 calcsheet 的值复制到 exportsheet 的复制脚本现在显示了相同的行为,它有时会起作用,有时会给出#N/A,所以让我遇到了同样的问题。
我的问题:
我已经阅读了各种具有类似问题和回复的帖子,其中提到此功能是喜怒无常或有错误。其他人说不可能在IMPORTRANGE. 鉴于它有时有效,有时无效,我怀疑该功能本身可能是正确的,但设置中存在同步或超时问题。
如何设置上述功能。要么使用
IMPORTRANGE并VLOOKUP完全进行一些更改/添加,要么以不同于一开始的方式构建。