我没有在worksheet functions中找到实数的分割(即//*[@id="ctl00_ctl50_g_3B684B74_3A19_4750_AA2A_FB3D56462880"]/div[1]/h4
//*[@id="ctl00_ctl50_g_3B684B74_3A19_4750_AA2A_FB3D56462880"]/div[2]/h4
//*[@id="ctl00_ctl50_g_3B684B74_3A19_4750_AA2A_FB3D56462880"]/div[3]/h4
)。因此,要评估/
,我们不能使用一个表达式=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, ...)
。
答案 0 :(得分:1)
至少除以常数(例如3),与product(something, .33333333)
不一样
答案 1 :(得分:1)
一种解决方案是使用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)));