如何输入数组公式

问题描述 投票:0回答:1

数组公式是使用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这样的属性会很好。

excel excel-formula office-js array-formulas
1个回答
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的未来增强。


UPDATE

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

© www.soinside.com 2019 - 2024. All rights reserved.