用于实数除法的工作表函数(即 /)

Worksheet function for division of real numbers (ie, /)

我没有在worksheet functions中找到实数除法(即/)。因此,要计算 =SUM(2,SUM(30,40)/3),我们不能使用一个表达式 ctx.workbook.functions.sum(1,ctx.workbook.functions.sum(30,40)/3); 我们必须做 ctx.sync 两次:

function test () {
    Excel.run(function (ctx) {
        var result = ctx.workbook.functions.sum(30,40);
        var result2;
        result.load();
            return ctx.sync()
                .then(function () {
                    result2 = ctx.workbook.functions.sum(1,result.value/3);
                    result2.load(); })
                .then(ctx.sync)
                .then(function () {
                    console.log(result2.value); });
    }); 
}

也就是说,如果一个表达式中有多个/,我们就得用更多的ctx.sync来求值,非常繁琐(尤其难以自动构造)。

因此,找到 / 的工作表函数或解决方法真的很棒,这样我们仍然可以一步计算包含 / 的表达式。

PS:似乎 +*- 也没有工作表函数,但我们可以使用变通方法:sum +product *sum(..., product(-1, ...) -

至少除以一个常数(例如 3),与 product(something, .33333333)

不一样吗

一种解决方案是结合使用 product 函数和 power 函数以及指数 -1。即使分母(除数)是变量而不是常数,此解决方案也有效。

var myNumerator = 888, myDenominator = 4;
var funcs = ctx.workbook.functions;
var result = funcs.product(myNumerator,funcs.power(myDenominator,-1));

在您评估 =SUM(2,SUM(30,40)/3) 的具体示例中,代码为:

result = funcs.sum(2,funcs.product(funcs.sum(30,40),funcs.power(3,-1)));