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

QQ登录

只需一步,快速开始

金牌服务用户

2

主题

6

帖子

26

积分

金牌服务用户

积分
26
  • 556

    金币

  • 2

    主题

  • 6

    帖子

最新发帖

金牌服务用户   /  发表于:2025-1-20 10:46  /   查看:102  /  回复:7
2金币
本帖最后由 境 于 2025-1-20 11:00 编辑

image.png984833374.png image.png288739623.png
1.我想让C7单元格值的,当C6值不为空时取C6值,为空时取D10值
2.因为D10其实也是计算出来的,计算过程又用到了C7的值,这样导致计算不出
报表文件放附件中,这种应该在报表中怎么解决?

测试模版2025012001.sjs

5.08 KB, 下载次数: 3

最佳答案

查看完整内容

您好,这里涉及到报表中的专用公式R.V和R.R,可以参考这里:https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/report-sheet/formula/hierarchical-cell-index/get-value/purejs 帮您改了一下,您看是否符合您的需求?

7 个回复

倒序浏览
最佳答案
最佳答案
Matthew.Xue
超级版主   /  发表于:2025-1-20 10:46:59
来自 6#
境 发表于 2025-1-20 14:09
现在去掉C7计算也是有问题,
1.如图1:金额的第1列计算值:2219054+第2列计算值:2148493应该要=第3列 ...

您好,这里涉及到报表中的专用公式R.V和R.R,可以参考这里:https://demo.grapecity.com.cn/sp ... ex/get-value/purejs


帮您改了一下,您看是否符合您的需求?
image.png500317077.png
image.png324420470.png

test.sjs

7.04 KB, 下载次数: 1

回复 使用道具 举报
Matthew.Xue
超级版主   /  发表于:2025-1-20 11:44:12
2#
您好, 这种情况叫做循环引用,也就是引用自身的情况,在普通sheet中会出现,比方说A1 = B1 + 1, B1 = A1 + 1。它用于迭代计算,比如使用牛顿逼近法求函数的解就可以用这种循环引用来得到,它的特点是随着计算次数的增加,会逐渐逼近真实的值。
我们有两个概念,叫做“最大迭代次数”和“最大误差”,如果循环计算的次数大于最大迭代次数,或者两次计算的数值差距小于最大误差,则停止计算。这两个值默认是1000和0.01。

在报表中,我们应该首先明确一个格子的值来源于哪里,比方您上传的模板中,我们其实可以将C7的公式修改为:
  1. =IF(C6<>"",C6,C7+C9+D9)
复制代码

可以看到C7的确引用了自身,那么就要问自己一个问题,当进入公式中的else情况时,此时C7没有值,那C7+C9+D9中的C7应该取多少?在Excel中,没有值就会取0,取0是否和您的业务相吻合?这个问题只要清楚了,公式怎么写其实也就明了了。
经过上述修改之后,由于有取0这个内在逻辑,C7和D10其实已经有值了:
image.png820810241.png
这样是否能满足您的需求呢?
回复 使用道具 举报

金牌服务用户   /  发表于:2025-1-20 13:14:11
3#
Matthew.Xue 发表于 2025-1-20 11:44
您好, 这种情况叫做循环引用,也就是引用自身的情况,在普通sheet中会出现,比方说A1 = B1 + 1, B1 = A1 + ...

image.png18368834.png image.png125894774.png
按上面修改公式后,还是有一定问题。
如上图:把数据源的数据过滤上面的清空数据后,  图2中后面的第6行的数据是没有了的,没有时应该按公式:C7+C9+D9,但现在还是计算不出。
回复 使用道具 举报
Matthew.Xue
超级版主   /  发表于:2025-1-20 13:38:57
4#
本帖最后由 Matthew.Xue 于 2025-1-20 13:42 编辑
境 发表于 2025-1-20 13:14
按上面修改公式后,还是有一定问题。
如上图:把数据源的数据过滤上面的清空数据后,  图2中后面的第6 ...

确实是这样。
其实还是回到那个问题,当BUD为空的时候,进入else,此时C7的值应该取多少呢?如果取0的话,是否C7就可以不用加上去了?
image.png758361205.png
image.png817758788.png
image.png308830870.png
回复 使用道具 举报

金牌服务用户   /  发表于:2025-1-20 14:09:43
5#
Matthew.Xue 发表于 2025-1-20 13:38
确实是这样。
其实还是回到那个问题,当BUD为空的时候,进入else,此时C7的值应该取多少呢?如果取0的话 ...

image.png490226134.png image.png826580810.png
现在去掉C7计算也是有问题,
1.如图1:金额的第1列计算值:2219054+第2列计算值:2148493应该要=第3列 初始化。

我现在需求想要的效果如图2:D10得计算的值,赋值到C7单元格,因为报表是自动扩展的,不知道这个应该怎么写。

回复 使用道具 举报

金牌服务用户   /  发表于:2025-1-20 15:22:22
7#
Matthew.Xue 发表于 2025-1-20 10:46
您好,这里涉及到报表中的专用公式R.V和R.R,可以参考这里:https://demo.grapecity.com.cn/spreadjs/Spr ...

可以的,是我想要的结果,谢谢。
回复 使用道具 举报
Matthew.Xue
超级版主   /  发表于:2025-1-20 15:24:31
8#
感谢您的支持~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部