找回密码
 立即注册

QQ登录

只需一步,快速开始

jangogo

初级会员

37

主题

75

帖子

258

积分

初级会员

积分
258

[已处理] formulaToRanges

jangogo
初级会员   /  发表于:2018-10-16 09:42  /   查看:3905  /  回复:5
从计算公式中获取公式引用范围
CalcEngine.formulaToRanges


YEAR(NOW())&"年"&MONTH(NOW())&"月"&DAY(NOW())&"日" 0 49
TypeError: Cannot read property 'length' of undefined
    at Object.I [as formulaToRanges] (gc.spread.sheets.all.min.js:32)

没有引用到单元格 这种会报错

5 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-10-16 10:12:47
沙发
您好,您调用formulaToRanges方法,

又传入了一个没有单元格引用的公式,您的需求是什么呢?

麻烦您把调用方法的代码贴一下,我们这边帮您排查一下。
回复 使用道具 举报
jangogo
初级会员   /  发表于:2018-10-16 10:28:47
板凳
KevinChen 发表于 2018-10-16 10:12
您好,您调用formulaToRanges方法,

又传入了一个没有单元格引用的公式,您的需求是什么呢?

这边的需求是
遍历所有单元格 把含有公式的单元格 找出来
并找到这个单元格引用到的其他单元格
//
如果产生错误的话 则 当前公式一定是没有引用其他单元格 或者公式错误吗?
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-10-16 10:44:10
地板
明白您的意思了,不过我这边试着把您的公式调用了一下,

不会直接报异常,方法返回值的结果如下图:
image.png133085326.png

我使用的是SpreadJS最新的V11.2.2版,

我把我的Demo也贴到附件里,您看看是不是调用方式的问题?

因为该方法返回值是个数组,直接访问数组元素的range属性确实有undefined风险。
回复 使用道具 举报
jangogo
初级会员   /  发表于:2018-10-16 11:21:05
5#
KevinChen 发表于 2018-10-16 10:44
明白您的意思了,不过我这边试着把您的公式调用了一下,

不会直接报异常,方法返回值的结果如下图:

好的 谢谢
顺便问下这个公式
IF(CW5>0,X5&":"&(AI5+50)&"*"&TEXT(ROUNDUP(AJ5+70,-1)),0)
在11.1.3下运行没有问题
11.2..2则出现错误
提示
Uncaught Invalid Formula
I        @        gc.spread.sheets.all.min.js:18
rSa        @        gc.spread.sheets.all.min.js:18
rSa        @        gc.spread.sheets.all.min.js:18
rSa        @        gc.spread.sheets.all.min.js:18
buildExpressionTree        @        gc.spread.sheets.all.min.js:18
parse        @        gc.spread.sheets.all.min.js:18
y        @        gc.spread.sheets.all.min.js:32
A        @        gc.spread.sheets.all.min.js:32

回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-10-16 12:31:54
6#
TEXT函数少了个参数,您试试这样写:

IF(CW5>0,X5&":"&(AI5+50)&"*"&TEXT(ROUNDUP(AJ5+70,-1),"General"),0)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部