用于实数除法的工作表函数(即 /)
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)));
我没有在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)));