找回密码
 立即注册

QQ登录

只需一步,快速开始

18577074114

中级会员

64

主题

255

帖子

795

积分

中级会员

积分
795

Wyn认证

18577074114
中级会员   /  发表于:2024-7-9 15:56  /   查看:1067  /  回复:16
小白现需求如题,请参加下图批注和DEMO,请大神支招,谢谢!

d03b13afedcf43918e05b66031574b3.jpg471041259.png

88b8fa4227605749bbb77440fd522e0.jpg458200988.png
613ecc14f0a57c318c390ea81e3b967.jpg254025572.png
1f9bac2eeeb9d749abe807e4e817641.jpg172149962.png
d03b13afedcf43918e05b66031574b3.jpg790809325.png

demo1.zip

6.59 MB, 下载次数: 193

16 个回复

倒序浏览
eat_grape_5
中级会员   /  发表于:2024-7-9 16:21:13
沙发
本帖最后由 eat_grape_5 于 2024-7-9 16:27 编辑

表格的汇总行功能可以实现,在需要统计的地方设置上汇总行,也就是图中楼主标记出“小计”与“总计”的地方。
看过楼主提供的图片,觉得这个数据结构用报表实现可能更出彩。报表有个单元格类型叫做汇总,用于统计数据列,除此之外还有其他单元格类型支持设计报表结构。

可以参考官网demo了解详情:https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/report-sheet/overview/purejs

评分

参与人数 1金币 +500 收起 理由
Joestar.Xu + 500 很给力!

查看全部评分

回复 使用道具 举报
不吐葡萄皮
注册会员   /  发表于:2024-7-9 16:44:53
板凳
因为插入的行在范围之外,所以公式没有调整,比如 G8和G18的公式改成下面的就能跟着调整了
=AGGREGATE(9,0,G9:OFFSET(G18,-1,0))

然后G6 可以借用AGGREGATE的特性直接跳过里面的小计=AGGREGATE(9,0,G9:G1000)

记得开启迭代计算或者allowDynamicReference.

评分

参与人数 1金币 +500 收起 理由
Joestar.Xu + 500 赞一个!

查看全部评分

回复 使用道具 举报
18577074114
中级会员   /  发表于:2024-7-9 17:42:16
地板
不吐葡萄皮 发表于 2024-7-9 16:44
因为插入的行在范围之外,所以公式没有调整,比如 G8和G18的公式改成下面的就能跟着调整了
=AGGREGATE(9,0 ...

您好!我尝试了一下您的方法,似乎没有起作用,新增的表格依然还是统计的原来区域里的数据,您看可否方便查阅我发的DAMO并修改?多谢!
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-9 17:42:56
5#
不吐葡萄皮 发表于 2024-7-9 16:44
因为插入的行在范围之外,所以公式没有调整,比如 G8和G18的公式改成下面的就能跟着调整了
=AGGREGATE(9,0 ...

回复 使用道具 举报
18577074114
中级会员   /  发表于:2024-7-9 17:48:38
6#
eat_grape_5 发表于 2024-7-9 16:21
表格的汇总行功能可以实现,在需要统计的地方设置上汇总行,也就是图中楼主标记出“小计”与“总计”的地方 ...

谢谢您!可是这边的实际可能不适用于应用到报表模块。因为需要填报的表格(我们希望保持excel的编辑界面)当中包含十几个sheet,每一个格式各不相同,其中本帖所反映的只是其中一个sheet,所以可能不便单拎这一个sheet出来做成报表
回复 使用道具 举报
不吐葡萄皮
注册会员   /  发表于:2024-7-9 18:47:35
7#
18577074114 发表于 2024-7-9 17:42
您好!我尝试了一下您的方法,似乎没有起作用,新增的表格依然还是统计的原来区域里的数据,您看可否方便 ...

看了一下你的逻辑代码,原来你是在json里面要复制8行含公式,
F8,G8... 的公式应该是=SUBTOTAL(9,OFFSET($A$1,ROW(),COLUMN()-1,7))  这个公式就是加当前单元格下方7个格子的总和,不论这个公式在哪里。
F9:F16 我猜你应该想去计算后面的单元格的和,类似的应该写成=SUM(OFFSET($A$1,ROW()-1,COLUMN(),1,28))

image.png582857360.png
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-7-10 09:29:22
8#
您好,可以参考楼上热心网友的回答,看看是否是您想要的效果
回复 使用道具 举报
18577074114
中级会员   /  发表于:2024-7-10 11:27:30
9#
不吐葡萄皮 发表于 2024-7-9 18:47
看了一下你的逻辑代码,原来你是在json里面要复制8行含公式,
F8,G8... 的公式应该是=SUBTOTAL(9,OFFSE ...

您建议的公式是OK的,多谢!但存在的问题是,当我想在一组(默认7行)数据表里插入新行后,原来的公式取的还是7行的数,公式应当如何修改才能适应插入若干行这样的实际?
回复 使用道具 举报
不吐葡萄皮
注册会员   /  发表于:2024-7-10 11:50:51
10#
18577074114 发表于 2024-7-10 11:27
您建议的公式是OK的,多谢!但存在的问题是,当我想在一组(默认7行)数据表里插入新行后,原来的公式取 ...

那就是要把=SUBTOTAL(9,OFFSET($A$1,ROW(),COLUMN()-1,7)) 里面的7改成动态的,推荐用代码监听addRows 来直接改公式,

纯公式实现的话我写的是=SUBTOTAL(9,OFFSET($A$1,ROW(),COLUMN()-1,IFNA(MATCH("小计",OFFSET($A$1,ROW()+1,4,100,1))-2,ROWS(A:A)-ROW())))
其中IFNA(MATCH("小计",OFFSET($A$1,ROW()+1,4,100,1))-2,ROWS(A:A)-ROW()) 通过E列的"小计"来计算偏移值替换7,这样已经不推荐了,因为可维护性很差

评分

参与人数 1金币 +500 收起 理由
Joestar.Xu + 500 很给力!

查看全部评分

回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部