数组公式是使用Ctrl + Shift + Enter在Excel中输入的公式。
使用Excel API,当我读取数组公式(Range.formulas
属性)时,我得到类似[["{=SUM(IF(A1:A10>50,1))}"]]
的东西。
当我尝试将此公式写回工作表时,它会输入一个常量字符串(因为括号)。如果我删除括号并输入公式,它将作为普通公式输入,而不是作为数组输入。
如何输入数组公式?
在VBA中,当您读取数组公式时,它返回不带括号的公式。如果要输入数组公式,请编写range.FormulaArray = =SUM(IF(A1:A10>50,1))
(再次,不带括号)。
保持两种平台(JS和VBA)一致并提供像Range.FormulaArray
,Range.HasArray
和Range.CurrentArray
这样的属性会很好。
Range.formulas
属性可用于读取或设置范围内单个单元格的公式。以下代码片段使用值填充范围C3:D5
(通过指定值的二维数组),然后设置Range.formulas
属性(通过指定公式的二维数组),使得单元格中的公式D5
(即,单元格位于在第3行,指定范围的第2列)是=SUM(D3,D4)
。
Excel.run(function (ctx) {
var sheetName = "Sheet1";
var rangeAddress = "C3:D5";
var values = [["First Number", 1000], ["Second Number", 200], ["Difference", null]];
var formulas = [[null, null], [null, null], [null, "=SUM(D3,D4)"]];
var range = ctx.workbook.worksheets.getItem(sheetName).getRange(rangeAddress);
range.values = values;
range.formulas = formulas;
range.load('text');
return ctx.sync().then(function () {
console.log(range.text);
console.log(range.formulas);
});
}).catch(errorHandlerFunction);
重新添加对您提到的其他属性的支持,如果您想将此建议添加到Office Developer Platform UserVoice,其他用户可以在那里投票,使Office PM团队能够了解总体优先级/需求,因为他们计划用于API的未来增强。
UPDATE
目前不支持使用Excel JavaScript API设置数组公式(就像在UI中使用Ctrl + Shift + Enter一样)。 Office Developer Platform UserVoice是跟踪this feature request的正确位置。