Ms office 将值数组指定给一个范围
我想用一个值数组启动一系列工作表。我有以下代码Ms office 将值数组指定给一个范围,ms-office,office-js,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;
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()
}
}
我的测试表明,只有当值
与地址
具有完全相同的维度(即高度、宽度)时,或者当值
是单个值时,这才有效。否则,将出现错误
有人能证实吗
如果是这样,我需要调整地址
,以适应值的维度
。获取值的维度很容易,但我无法从例如1个左上单元格+1个行数+1个列数,或1个左上单元格和1个右下单元格中获取范围
我遗漏了什么吗?在VBA中,您将使用。在OfficeJS中,似乎有一个函数名为
[g] 设置与当前范围对象类似的范围对象,但其右下角扩展(或收缩)了一定数量的行和列
不幸的是,它接受增量值,因此需要计算当前范围大小和目标大小之间的差异。
例如,如果您想通过cols
单元格获得一系列行
,您可以尝试以下方法:
var originalRange = sheet.getRange(address);
var range = originalRange.getResizedRange(
rows - originalRange.rowCount, cols - originalRange.columnCount);
正如CompuChip所说,目前还没有一个API可以将一个范围调整到一个特定的绝对大小,尽管它即将问世
这就是说:如果您有一个数组,只需从单个单元格开始,然后按数组的行数减号-1(即,array.length-1
)调整其大小,然后按列减号-1(array[0]。length-1
)
您可以在新的脚本实验室()中,通过单击五下鼠标来尝试这个片段。只需安装Script Lab加载项(免费),然后在导航菜单中选择“导入”,并使用以下要点URL:。看
const values = [
[1, 2, 3],
["Hello", "Bonjour", "Привет"]
]
await Excel.run(async (context) => {
const sheet = context.workbook.worksheets.getActiveWorksheet();
const range = sheet.getRange("D3").getResizedRange(
values.length - 1, values[0].length - 1);
range.values = values;
await context.sync();
});