找回密码
 立即注册

QQ登录

只需一步,快速开始

丫丫

金牌服务用户

7

主题

15

帖子

74

积分

金牌服务用户

积分
74
丫丫
金牌服务用户   /  发表于:2023-2-24 10:46  /   查看:907  /  回复:3
本帖最后由 丫丫 于 2023-2-24 10:51 编辑

添加数据公式,设置某一行的所有单元格等于同一列前两行单元格相减
sheet.setArrayFormula(2,0,1,2,'=IF(AND(A1:B1<>"",A2:B2<>""),A2:B2-A1:B1,"")') 的结果是:
A3单元格:A1至B1和A2至B2都不为空时才会执行A2-A1
B3单元格:A1至B1和A2至B2都不为空时才会执行B2-B1
但在wps测试的结果是 A3单元格 :A1和A2有值就会相减,不需要B1和B2也有值,这才是我想要的结果


3 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-2-24 18:19:40
沙发
经过测试 office Excel跟SpreadJS的行为一致,测试结果如下图所示:
image.png279011229.png
从逻辑来说这里是一个AND逻辑就是且,也就是A1:B1与A2:B2同时不为空的时候才会触发A2:B2-A1:B1的结果,从逻辑上也应该是如此。所以这里感觉像是wps的问题。wps从逻辑上是说不通的。
回复 使用道具 举报
丫丫
金牌服务用户   /  发表于:2023-2-27 17:19:43
板凳
Clark.Pan 发表于 2023-2-24 18:19
经过测试 office Excel跟SpreadJS的行为一致,测试结果如下图所示:

从逻辑来说这里是一个AND逻辑就是且 ...

wps 上的结果才是我想要的结果,A1:B1不是相对位置吗,动态位置,当前是A1,A2就是IF(AND(A1<>"",A2<>""),A2-A1,"")
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-2-27 17:52:48
地板
本帖最后由 Clark.Pan 于 2023-2-27 17:54 编辑

这个是微软的OFFICE 365:
A1:B1<>""是一个数组公式,A2:B2<>""也是
测试如下:
D7设置了=A1:B1<>"",这个数组公式,这个数组公式说明计算结果为D7和D8两个结果
image.png216743468.png
D11设置了=A2:B2<>"",这个数组公式,这个数组公式说明计算结果为D11和D12两个结果
image.png741804809.png
D14设置:=AND(A1:B1<>"",A2:B2<>"")
image.png610743407.png
当A1,A2,B1,B2均有值时 D14结果为true:
image.png146076659.png
这没问题吧。
当把B2结果清空,E11结果为FALSE,D11结果仍未true。
但D14结果为false.因为D14是基于两个数组公式结果的且。其中一个数组公式结果已经是一个true,一个false了,那么且下来肯定是false。
image.png109942626.png

综上所述WPS这在部分的计算逻辑是错误的。SpreadJS目前跟Excel逻辑保持一致。
另外,我们不可能按照WPS的公式计算逻辑去修复,不可能将一个正确的逻辑修复成错误的。您这边需要根据您的业务逻辑更改公式。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部