找回密码
 立即注册

QQ登录

只需一步,快速开始

Quber
金牌服务用户   /  发表于:2024-5-16 10:44  /   查看:1701  /  回复:9
本帖最后由 Quber 于 2024-5-16 10:54 编辑

1、版本号
版本为17.0.8,Vue3。



2、问题描述
实现需求1:表单Sheet2中的单元格A1的值等于表单Sheet1中的单元格A2的值,当Sheet1中的单元格A2为空的时候,Sheet2中的单元格A1的值也显示为空。也就是Sheet1中的A2真正有值的时候,Sheet2中的A1才显示。并且Sheet2中的单元格A1的值要求为空字符串或null都可以。

实现需求2:表单Sheet1中的A1的值=B1/C1,当B1或C1为空,或者B1/C1计算有误的时候,A1不显示字符串【#DIV/0!】,要求显示为空,并且A1的值要求为空字符串或null都可以。

问题描述1:现在的问题是,Sheet1中的A2为空时,Sheet2中的A1的值为0。

问题描述2:现在的问题是,Sheet1中的A1=B1/C1,当B1或C1为空或者B1/C1计算有误的时候,A1显示为字符串【#DIV/0!】。

如下图所示:
image.png240248717.png

image.png967370605.png

image.png897459106.png


这个需求在我们业务系统中,有很多这样的引用公式,有没有类似全局处理这样的需求的解决方案呢?

9 个回复

倒序浏览
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-5-16 11:17:25
沙发
您好,目前没看有全局的配置可以实现您的需求,您可以通过Excel公式来达到您所要的效果,即,在您的除法公式外面套一个IFERROR公式以及IF公式:
IF(A1="","",A1)
IFERROR(B1/C1, 0)
回复 使用道具 举报
Quber
金牌服务用户   /  发表于:2024-5-16 11:25:31
板凳
Richard.Huang 发表于 2024-5-16 11:17
您好,目前没看有全局的配置可以实现您的需求,您可以通过Excel公式来达到您所要的效果,即,在您的除法公 ...

针对公式少的情况下可以这样处理,我们工作簿中,有很多Sheet,每个Sheet都有大量这样的公式,如果每个单元格的公式都手动加IF、IFERROR的话,效率就太慢了,不知道针对这种情况有没有解决办法呢?
回复 使用道具 举报
Quber
金牌服务用户   /  发表于:2024-5-16 11:29:26
地板
Quber 发表于 2024-5-16 11:25
针对公式少的情况下可以这样处理,我们工作簿中,有很多Sheet,每个Sheet都有大量这样的公式,如果每个单 ...

因为这个工作簿,有可能是用户自己上传上来的。
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-5-16 13:38:08
5#
对于这个问题,您看自定义单元格类型能否满足您的需求,具体操作可以参考这篇帖子:https://gcdn.grapecity.com.cn/showtopic-52876-1-838.html
回复 使用道具 举报
Quber
金牌服务用户   /  发表于:2024-5-16 13:51:40
6#
Richard.Huang 发表于 2024-5-16 13:38
对于这个问题,您看自定义单元格类型能否满足您的需求,具体操作可以参考这篇帖子:https://gcdn.grapecity ...

针对 需求1,没有解决
针对 需求2,解决了不显示【#DIV/0!】的问题,但是此时使用sheet.getValue获取单元格的值,返回的居然是{"_code":7,"_error":"#DIV/0!"},应该是空字符串才对,如下图所示:
image.png607057494.png
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-5-16 17:40:54
7#
Quber 发表于 2024-5-16 13:51
针对 需求1,没有解决
针对 需求2,解决了不显示【#DIV/0!】的问题,但是此时使用sheet.getValue获取单 ...

对于您的两个问题,如果想通过js的方式来批量处理,这个确实做不到,上面给您的方案,也只是显示值上满足您的需求,而value这个东西,我们无法通过js代码控制去操作。如果能够通过js代码修改value,那么和您直接在单元格上删除这个公式填一个值差不多,因此综上,如果您确实有这样的需求,只能通过Excel公式去进行设置,没有别的方案
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-5-24 16:16:20
8#
您好,请问楼主根据上面的描述是否得到帮助,如果仍然存在疑惑,欢迎继续跟贴询问
回复 使用道具 举报
Quber
金牌服务用户   /  发表于:2024-5-24 16:37:39
9#
Richard.Huang 发表于 2024-5-24 16:16
您好,请问楼主根据上面的描述是否得到帮助,如果仍然存在疑惑,欢迎继续跟贴询问

上述需求确实不好处理,需求1只能先暂时使用IF  IFERROR函数来处理。
需求2只有在获取到值的时候判断值是不是{"_code":7,"_error":"#DIV/0!"},如果是的话就单独处理下值。

此贴可以结贴了。
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-5-24 18:15:07
10#
好的,本帖子的问题解决,这里就先结帖了。后续如果您有新的问题,也欢迎创建新的求助帖。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部