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
。。。很高兴知道这是可行的。。。谢谢你的帮助。。。