【问题标题】:How to enter Array Formulas如何输入数组公式
【发布时间】:2017-11-20 23:12:04
【问题描述】:

数组公式是在 Excel 中使用 Ctrl + Shift + Enter 输入的公式。

使用 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 等属性。

【问题讨论】:

  • 写成=countif(a1:a10, ">50")
  • 谢谢,但我仅将此公式用作示例。真正的问题是如何使用 Excel JavaScript API 输入数组公式。

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


【解决方案1】:

Range.formulas 属性可用于读取或设置区域内单个单元格的公式。以下代码 sn-p 使用值填充范围 C3:D5(通过指定值的二维数组),然后设置 Range.formulas 属性(通过指定公式的二维数组)使得单元格 @ 987654327@(即指定范围第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 开发人员平台 UserVoice 是跟踪 this feature request 的正确位置。

【讨论】:

  • 感谢 Kim,但数组公式不是写在工作表数组上的公式,数组公式是用 Ctrl+Shift+Enter 输入的公式。此功能的建议链接位于officespdev.uservoice.com/forums/…,我刚刚投了赞成票。
  • 感谢 Felipe 的澄清以及对 UserVoice 中的功能请求的支持。我已将此信息添加到答案中,以帮助任何可能在 cmets 中看不到它的人。再次感谢。
  • 谢谢!我认为您应该将更新文本修复为 (...) 目前不支持。 (...)
  • 感谢您的提示...我已修正错字。我想这就是我在早上喝咖啡之前在 Stack Overflow 上得到的:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-24
相关资源
最近更新 更多