如何输入数组公式

时间:2017-11-20 23:12:05

标签: excel excel-formula office-js array-formulas

数组公式是使用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.FormulaArrayRange.HasArrayRange.CurrentArray等属性。

1 个答案:

答案 0 :(得分:1)

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的增强。

<强>更新

目前不支持使用Excel JavaScript API设置数组公式(就像在UI中使用 Ctrl + Shift + Enter 一样)。 Office Developer Platform UserVoice是跟踪this feature request的正确位置。