找回密码
 立即注册

QQ登录

只需一步,快速开始

gaosion
注册会员   /  发表于:2017-12-22 13:17:10
11#
我的意思是,异步函数,和spread本身支持的函数搭配,他们为什么会出现value呢? 如果没有这样异步函数,再怎么循环引用都不会出value啊?没有办法解决我这个问题了吗?
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-12-22 14:04:02
12#
本帖最后由 ClarkPan 于 2017-12-22 14:05 编辑

出现#value就是单元格引用的关键字与spreadjs中的关键字冲突导致的,好比您B4引入了B6,B6值是#value那么B4也是#value
回复 使用道具 举报
gaosion
注册会员   /  发表于:2017-12-22 14:20:13
13#
但是为什么异步函数不执行了呢?demo中您可以查看一下,打断点看看,渲染之后,出现value的单元格的异步函数是没有执行的
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2017-12-22 14:51:18
14#
能否这样,在 spread 中添加一个隐藏表单,比如叫 "Data",把你的数据都存在 Data 表单里,然后你的 B18 的公式可以写成=PPXEQ("[869:3]固定资产审定表123000-7-1",Data!B21), 这样就不会造成循环引用了
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-12-22 15:00:04
15#
就是不应该执行啊,因为单元格引用的冲突导致#value的错误,检验出错是在执行异步函数之前的。比如您B3引的B7,B7引的B9,B9引的B11,B11引的B13,你把B13值设为随便一个数值只要不是#Value,是不是B3,B7,B9,B11都正常计算了。所以首先是校验引用的单元格是不是#VALUE,如果不是才会进行计算。这就是为啥是#Value的过程,至于导致问题的根本原因是您单元格引用的关键字与spreadjs中的关键字冲突吗,好比您引一个B3,您知道B3指的是另一个表格中的B3,但是spreadjs怎么知道,B3在spreadjs中的含义就是只本表的B3单元格,所以在校验引用单元格的时候就去找的这张表的B3单元格,结果B3就是#value,那么结果就是#value
回复 使用道具 举报
gaosion
注册会员   /  发表于:2017-12-22 15:04:18
16#
$B$3的形式是否可行,公式中有更多能区分本表单和其他表单的符号吗?
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-12-22 15:12:03
17#
$B$3指的还是本表的B3,只是B3是相对引用,$B$3是绝对引用
回复 使用道具 举报
gaosion
注册会员   /  发表于:2017-12-22 15:17:52
18#
我们现在还是停留在分析这个问题的层面上,现在就是循环引用的问题,没办法解决了吗?只能妥协,用引号包裹,放弃下拉或平拉复制的功能吗?能否跟相关开发人员反映这个问题呢?毕竟跨文件的表间函数需求还是很大的。
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2017-12-22 15:25:35
19#
试一试 14 楼的做法看看,你只要公式里面的单元格互相引用,就必然会造成循环引用的。
回复 使用道具 举报
gaosion
注册会员   /  发表于:2017-12-22 15:30:14
20#
感谢楼上的回答,这样不可行,这样会增加表间函数的阅读难度,而且不太符合我们项目的业务逻辑,因为需要要求每张表都新增一个sheet并设置影藏,增加了很多映射逻辑,相比于引号包裹单元格信息显得得不偿失了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部