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

Ms office 用于实数除法的工作表函数(即,/),ms-office,office-js,Ms Office,Office Js,我没有在中找到实数的除法(即,/)。因此,为了计算=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);

我没有在中找到实数的除法(即,
/
)。因此,为了计算
=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:似乎对于
+
*
-
也没有工作表函数,但我们可以使用变通方法:
求和
对于
+
对于
*
求和(…,积(-1,…)
对于
-

至少对于除以常数(例如,3),这不是与乘积(某物,.33333333)相同吗?

一种解决方案是将乘积函数和幂函数与指数-1结合使用。即使分母(除数)是变量而不是常数,该解决方案也会起作用

var myNumerator=888,myDenominator=4;
var funcs=ctx.workbook.functions;
var结果=函数积(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));

如果没有您的postscript,我想我不会想到这个功能,所以感谢您为我们的API库添加了一些新技巧:)真的很酷@SoftTimur,请注意,这些函数以某种方式链接,任何函数都会接受前一个函数的结果,因此您可以像Michael Saunders在上面写的那样进行计算,在最后只使用一个“.load”和“.sync”。我不知道被除数和除数。。。现在,从理论上来说,如果给定任何子公式,我们可以用工作表函数自动构造一个字符串,然后使用
eval
ctx.sync
。。。很高兴知道这是可行的。。。谢谢你的帮助。。。