找回密码
 立即注册

QQ登录

只需一步,快速开始

nkbai

高级会员

24

主题

52

帖子

1364

积分

高级会员

积分
1364

活字格认证

nkbai
高级会员   /  发表于:2015-11-9 20:10  /   查看:4926  /  回复:8
我想实现第三列=第一列*第二列
新添加的行也有这样的功能!
谢谢

8 个回复

倒序浏览
CCKan
银牌会员   /  发表于:2015-11-10 09:08:00
沙发
很抱歉,我们目前没有支持基于整列的公式,你只能用循环一个一个单元格设置了,然后在添加行的时候在新添加的单元格上也设置上公式。
列公式的支持也在我们的计划列表里面,但是具体哪个版本会支持现在还不确定。
回复 使用道具 举报
nkbai
高级会员   /  发表于:2015-11-10 22:07:00
板凳
好的,谢谢了,我看你们提供的手册里有R[1]C1这样的例子
但是我在试用的时候输入=R[0]C[-1] 会报错,按我的理解应该是一个相对位置的公式,就是当前行前一列的值,好像不行,这是怎么回事?
手册:Relative and Absolute
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2015-11-11 10:11:00
地板
跟 Excel 一样,你需要改公式的引用类型:
spread.referenceStyle(GcSpread.Sheets.ReferenceStyle.R1C1)

评分

参与人数 1金币 +999 收起 理由
frank.zhang + 999 协助回答问题

查看全部评分

回复 使用道具 举报
nkbai
高级会员   /  发表于:2015-11-11 10:32:00
5#
回复 4楼CCKan的帖子

那是否意味着我没法在公式里直接使用这种方法呢?
现在公式最大的问题是,表格中的数据行顺序不可能严格对应到数据库,会发生变化,
下次取出来行序发生变化的时候(这个不可避免,因为会增加减少行), 这时候公式实际上是错误的.
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2015-11-11 11:53:00
6#
1. 你指需要设置 spread.referenceStyle(GcSpread.Sheets.ReferenceStyle.R1C1); 然后就可以用=R[0]C[-1]  这样的公式。
2. 当你在 SpreadJS 中添加删除行的时候,SpreadJS 中的公式会自动同步,保持引用的单元格不会变化,这和 Excel 是一样的。至于绑定到数据库的情况,一般来说,最常用的有两种公式:一是引用本行的其它单元格,二是引用整列(比如做合计),这两种公式在行变化的时候都不会有问题。
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2015-11-11 11:54:00
7#
顺带说一句:其实类似于 =A1 这种也是相对引用,而 =$A$1 才是绝对引用
回复 使用道具 举报
nkbai
高级会员   /  发表于:2015-11-11 15:02:00
8#
两种公式能否混用? 毕竟这种公式的写法有问题,或者有没有对这两种公式进行转换的方法?
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2015-11-11 16:14:00
9#
不可能混用的,这两种用法混用会有语法上的歧义。实际上,你直接用 =A1 这种方式就可以了,因为不管是 =A1 还是 =R[0]C[-1] , 在SpreadJS 内部解析完毕后都是 一样的,没有任何区别。
下面的方法可以把单元格的列 index 转成字母。
indexToLetters(index: number): string {
            var t = "A";
            var aCode = t.charCodeAt(0);
            var sb = "";
            for (; index > 0; index = (index - 1) / 26) {
                var n = parseInt(((index - 1) % 26), 10);
                if (index === 1 || (n >= 0 && index > 1)) {
                    sb = String.fromCharCode(aCode + n) + sb;
                }
            }
            return sb;
        }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部