找回密码
 立即注册

QQ登录

只需一步,快速开始

白鱼

中级会员

61

主题

227

帖子

586

积分

中级会员

积分
586
白鱼
中级会员   /  发表于:2024-6-12 10:42  /   查看:1367  /  回复:4
1金币
本帖最后由 Clark.Pan 于 2024-6-12 17:27 编辑


编号:SJS-24768

image.png733828735.png
如图所示 我们需要将H20/J20/I20三个单元格的公式设置为=H19/=J19/=I19,用来循环计算,步骤如下
1.为此我们先给目标单元格设置公式为=0并计算,
2.设置目标公式
3.将目标单元格的值直接设置到单元格上,清除其公式,从而达到消除循环引用的目的
最终得到结果如下。
image.png665639342.png
附件中还给出了测试excel文件,直接在excel上设置公式后,得到结果如下
image.png614338683.png


具体代码见附件

demo-0612.zip

1 MB, 下载次数: 440

最佳答案

查看完整内容

代码层面按照demo设置会有一个问题,demo因为公式挂起了,您在公式挂起期间模拟了单元格设置0和单元格设置=H19/=J19/=I19的操作,但是由于公式挂起是导致公式暂时失效,在公式恢复之后,设置0的操作就没有生效,相当于做了直接设置=H19/=J19/=I19的操作,而且三个单元格公式设置的操作是一次完成的,跳过了中间挨个设置后计算的过程,而迭代计算恰恰这里是不能跳过的,迭代计算中间计算的结果是要当做参数去再计算的。这就导致计算 ...

4 个回复

正序浏览
白鱼
中级会员   /  发表于:2024-6-12 16:02:40
4#
Clark.Pan 发表于 2024-6-12 15:11
我详细的调查了您提供的demo跟测试excel文件,发现了一些问题,但又跟您描述的有些不同。
我先说一下我发 ...

你是直接在官网上手动编辑公式的吗?我更新了附件中的json和excel文件,json文件由excel上传拿到的,不过我在代码层面按照demo设置,依然和我上面的描述一致。你试试按照我的demo项目跑一下?我设置的编辑结束之后会进行计算操作,你那边可以改一下监听的事件,触发点不影响。但是我看结果还是存在问题。
回复 使用道具 举报
白鱼
中级会员   /  发表于:2024-6-12 15:20:34
3#
Clark.Pan 发表于 2024-6-12 15:11
我详细的调查了您提供的demo跟测试excel文件,发现了一些问题,但又跟您描述的有些不同。
我先说一下我发 ...

好的,辛苦了。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-6-12 15:11:20
2#
我详细的调查了您提供的demo跟测试excel文件,发现了一些问题,但又跟您描述的有些不同。
我先说一下我发现的问题:
1.demo中的一些固定设置与Excel不同,例如:
demo中 I27 的值是4%

image.png47523802.png
而测试Excel文件中为3%
image.png498202208.png
诸如此类在已知数据上的不同还有很多,这些都会影响最终迭代计算的计算结果,因为变量的原因无法确定是SpreadJS算错了,还是别的问题。

于是我直接测试Excel文件导入SpreadJS中进行测试,这样就避免基础数据的差异,导入后。
1,我先按照您说的步骤将单元格的公式设置为=0来清空迭代计算的结果,如下图所示,SpreadJS与Excel结果看上去是一致的:
image.png166832579.png image.png932626342.png
接下来,我继续按照步骤将单元格设置为H19/I19/J19,结果J19确实有和Excel不一致的地方如下图:
image.png36194151.png image.png165291747.png
但H19与I19与Excel计算结果一致,跟您问题里描述的不一致。

综上所述:
我们会调查J19与Excel计算结果不一致的问题,H19与I19基于目前事实,我们认为计算结果跟Excel是一致的。


回复 使用道具 举报
最佳答案
最佳答案
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-6-12 10:42:35
来自 5#
本帖最后由 Clark.Pan 于 2024-6-12 17:28 编辑

代码层面按照demo设置会有一个问题,demo因为公式挂起了,您在公式挂起期间模拟了单元格设置0和单元格设置=H19/=J19/=I19的操作,但是由于公式挂起是导致公式暂时失效,在公式恢复之后,设置0的操作就没有生效,相当于做了直接设置=H19/=J19/=I19的操作,而且三个单元格公式设置的操作是一次完成的,跳过了中间挨个设置后计算的过程,而迭代计算恰恰这里是不能跳过的,迭代计算中间计算的结果是要当做参数去再计算的。这就导致计算的结果跟Excel有差异了。所以还是按照我上述验证的方式,验证的结果是正确的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部