请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

明峰

注册会员

1

主题

2

帖子

5

积分

注册会员

积分
5
  • 25

    金币

  • 1

    主题

  • 2

    帖子

最新发帖
明峰
注册会员   /  发表于:2022-7-21 16:46  /   查看:2259  /  回复:4
1金币
你好,咨询一下问题哈。

具体描述如下:

E8 设置公式 =SUM(E4:E7),然后,在 4 和 7 之间插入行,公式会自动变化的,比如插入一行就变成了 =SUM(E4:E8),原来的E8 变成了 E9,但是,如果在8和9之间插入行,那么,插入行是正常的,但是公式还是 =SUM(E4:E8),这样就相当于少统计了新插入的行

最佳答案

查看完整内容

请参考下面的代码,在RowChanged事件中判断propertyName,确定是新增行,然后对符合条件的单元格公式进行修改

4 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-7-21 16:46:08
来自 5#
请参考下面的代码,在RowChanged事件中判断propertyName,确定是新增行,然后对符合条件的单元格公式进行修改

  1.       sheet.bind(GC.Spread.Sheets.Events.RowChanged, function (e, info) {
  2.             if(info.propertyName=="addRows"){
  3.                 for(var c=0;c<sheet.getColumnCount();c++){
  4.                   var formula=sheet.getFormula(info.row+1,c);
  5.                   
  6.                   if(formula!=null){
  7.                         
  8.                         var expression=GC.Spread.Sheets.CalcEngine.formulaToExpression(sheet, formula, 0, 0);
  9.                         
  10.                         expression.arguments.forEach((arg)=>{
  11.                               
  12.                               if(arg.endRow==info.row-1){
  13.                                     arg.endRow=info.row;
  14.                               }
  15.                         })
  16.                         var newformula= GC.Spread.Sheets.CalcEngine.expressionToFormula(sheet, expression, 0, 0);
  17.                         console.log(newformula);
  18.                         sheet.setFormula(info.row+1,0,newformula);
  19.                   }
  20.                 }
  21.             }
  22.       });
复制代码
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-7-21 17:00:22
2#
你好,这个行为目前是和excel保持一致的,只有在E4:E7内部插入行才会加到公式中,

新插入的E8行,本身就不是在E4:E7范围内,自然不会被统计进去
回复 使用道具 举报
明峰
注册会员   /  发表于:2022-7-21 17:09:09
3#
Richard.Ma 发表于 2022-7-21 17:00
你好,这个行为目前是和excel保持一致的,只有在E4:E7内部插入行才会加到公式中,

新插入的E8行,本身就 ...

我理解这个意思,但是我们想实现的效果,就是公式也能够跟着变,想咨询一下这个需要怎么实现呢?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-7-21 17:19:38
4#
明白,这边正在验证,一会给你一个代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部