找回密码
 立即注册

QQ登录

只需一步,快速开始

杨博

注册会员

11

主题

34

帖子

119

积分

注册会员

积分
119
杨博
注册会员   /  发表于:2021-11-11 14:40  /   查看:1681  /  回复:8
1金币
问题描述:
使用spreadJS设置累加计算公式,当数据量很大时,报错。数据行数有连续的,也有间隔的。
当连续的行数相加时,使用sum(kx1:kx2)可以解决。
当间隔的行数相加时,想使用subtotal(9,k1,k2,k3,...),但当数据量大时,仍报错。这种情况应该怎么处理?
代码如下:

image.png981842346.png

image.png164143675.png
image.png655850524.png
image.png789510192.png

最佳答案

查看完整内容

那就是添加一列辅助列了,比如上面的代码 let arr = []; for(i=0;i { this.handleGetSheet().setValue(ele,26, 1) //把分组信息放到辅助列里面 }) 公式是这个: this.handleGetSheet().setFormula(0, 10, "SUMIF(Z1:Z9999, 1, K1:K9999)")

8 个回复

倒序浏览
最佳答案
最佳答案
WilliamChang
葡萄城公司职员   /  发表于:2021-11-11 14:40:36
来自 6#
杨博 发表于 2021-11-11 15:41
实际情况不是连续的行相加,是非连续行相加。也没有什么规律,对于这种大数据量的非连续行相加有啥办法吗?

那就是添加一列辅助列了,比如上面的代码
let arr = [];
for(i=0;i<9999;i++){i%2==0&&arr.push(i)};


        arr.map(ele => {
          this.handleGetSheet().setValue(ele,26, 1) //把分组信息放到辅助列里面
        })
公式是这个:
this.handleGetSheet().setFormula(0, 10, "SUMIF(Z1:Z9999, 1, K1:K9999)")
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-11 14:51:14
2#
1.关于Sum的使用,Sum也可以支持多区域的合计,多个区域以逗号分隔即可。比如F:G列,和I:K列两部分的合计,这个可以作为此问题的临时解决办法
  1. =SUM(F:G,I:K)
复制代码


2关于SubTotal报错问题,我建议你上传一个重现问题的demo,我帮你验证一下原因
回复 使用道具 举报
杨博
注册会员   /  发表于:2021-11-11 15:37:47
3#
举例代码如下,请默认实际情况中arr中的数字是不连续的
let arr = []for(i=0;i<9999;i++){arr.push(i)}
let formula = '=SUBTOTAL(9,'
        arr.map(ele => {
          formula += `K${ele},`
        })
        formula = formula.substring(0, formula.length - 1)
        formula += ')'
以下行会报错
this.handleGetSheet().setFormula(0, 10, formula)
回复 使用道具 举报
WilliamChang
葡萄城公司职员   /  发表于:2021-11-11 15:39:14
4#
公式的参数个数是不能超过256个的,所以可能需要换个解决思路,比如修改代码,使用range,把k1,k2,k3,...k999 改成k1:k999。
或者是增加一列辅助列记录分组信息然后隐藏,然后用SUMIF来进行计算。
回复 使用道具 举报
杨博
注册会员   /  发表于:2021-11-11 15:41:25
5#
实际情况不是连续的行相加,是非连续行相加。也没有什么规律,对于这种大数据量的非连续行相加有啥办法吗?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-11 16:33:40
7#
6楼提供的办法可以解决你说的大数据量的非连续行问题
回复 使用道具 举报
杨博
注册会员   /  发表于:2021-11-11 17:18:59
8#
好的,已解决,非常感谢
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-11-11 18:05:10
9#
杨博 发表于 2021-11-11 17:18
好的,已解决,非常感谢

那就结贴啦,有新问题欢迎开新帖交流~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部