将值数组分配给范围

时间:2017-05-15 05:46:53

标签: ms-office office-js

我想用一组值启动一系列工作表。我有以下代码。

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个右下角细胞。

我错过了什么吗?

2 个答案:

答案 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 值,因此您需要计算当前范围大小和目标大小之间的差异。  例如,如果您希望获得一系列rowscols个单元格,您可以尝试一些

的内容。
var originalRange = sheet.getRange(address);
var range = originalRange.getResizedRange(
     rows - originalRange.rowCount, cols - originalRange.columnCount);