我想用一组值启动一系列工作表。我有以下代码。
function initiate(address, values) {
return Excel.run(function (ctx) {
var sheet = ctx.workbook.worksheets.getActiveWorksheet();
var range = sheet.getRange(address);
var range.values = values;
return ctx.sync()
}
}
我的测试表明,仅当 values
具有与address
完全相同的尺寸(即高度,宽度)或values
时一个单一的价值。否则,将出现错误。
有人可以证实吗?
如果有,我需要调整address
以适应values
的维度。很容易得到values
的维度,但我不能find a function从例如1个左上角的单元格+ 1个行数+ 1个列数或1个左上角的范围获得范围细胞和1个右下角细胞。
我错过了什么吗?
答案 0 :(得分:1)
正如CompuChip所说,目前还没有一个用于将范围调整为特定绝对大小的API,尽管它即将推出。
那说:如果你有一个数组,只需从单个单元格开始,然后按数组的row-count-minus-1(即array.length - 1
)调整大小,然后是columns-minus-1({ {1}})
array[0].length - 1
您可以在新的脚本实验室(https://aka.ms/getscriptlab)中点击五次点击直播。只需安装Script Lab加载项(免费),然后在导航菜单中选择“导入”,并使用以下GIST URL:https://gist.github.com/Zlatkovsky/6bc4a7ab36a81be873697cab0fa0b653。请参阅more info about importing snippets to Script Lab。
答案 1 :(得分:0)
在VBA中,您可以使用Range.Resize
。在OfficeJS中,似乎有一个名为getResizedRange的函数
[g]使用与当前Range对象类似的Range对象,但其右下角由某些行和列展开(或缩小)。
不幸的是,它接受 delta 值,因此您需要计算当前范围大小和目标大小之间的差异。
例如,如果您希望获得一系列rows
个cols
个单元格,您可以尝试一些
var originalRange = sheet.getRange(address);
var range = originalRange.getResizedRange(
rows - originalRange.rowCount, cols - originalRange.columnCount);