是否可以从另一个命名范围中选择一个指定范围?
例如,如果我有一个命名范围,则说“ firstRange”,而我只想从该范围内获取第二列,以复制到另一个命名范围。
我可以通过使用for循环分别复制单元格来完成此操作,但这需要很长时间。
不幸的是 getRangeByName(“ firstRange”)。getRange(1,1,2)无效,因为getRange不是getRangeByName的方法
谢谢
答案 0 :(得分:0)
您可以获取命名范围,然后获取返回多维数组的值。然后,您可以解析出您正在寻找的值。例如
var parsed = SpreadsheetApp.getActiveSpreadsheet()
.getRangeByName('namedRange')
.getValues()
.map(function(row) {
return [row[1]];
});
这将从命名范围中获取所有值,然后将它们映射并从第二列(在此示例中为1索引)获取值
我希望有帮助。
答案 1 :(得分:0)
这种方法怎么样?我认为您的情况有几个答案。因此,请将此视为其中之一。流程如下。
offset()
从名为range的源中检索的。
getLastRow()
用于命名范围时,返回的值是命名范围的最后一行。在此示例脚本中,将firstRange
命名范围的第二列复制到secondRange
的命名范围。
var ss = SpreadsheetApp.getActiveSpreadsheet();
// Retrieve source range.
var sourceRange = ss.getRangeByName("firstRange");
var src = sourceRange.offset(0, 1, sourceRange.getLastRow(), 1);
// Retrieve destination range.
var destinationRange = ss.getRangeByName("secondRange");
// Copy from source range to destination range.
src.copyTo(destinationRange);
例如,如果要将复制的源范围复制到目标范围的第二列,请按如下所示修改var destinationRange = ss.getRangeByName("secondRange")
。
var destinationRange = ss.getRangeByName("secondRange").offset(0, 1, 1, 1);
如果这不是您想要的,对不起。