找回密码
 立即注册

QQ登录

只需一步,快速开始

EplanningSoft

初级会员

15

主题

73

帖子

210

积分

初级会员

积分
210
EplanningSoft
初级会员   /  发表于:2020-8-17 14:24  /   查看:2833  /  回复:9
1金币
在spreadjs中,EDATE公式计算结果如下(1899/12/30):
image.png739236755.png
Excel中计算结果如下(1900/01/00):
image.png21178587.png


问题:
   1、EDATE公式中 引用单元格为空时,spreadjs的计算结果 和 Excel不一致
   2、所有是31天的月份,spreadjs中,只有30天,对比效果如下:
image.png306141967.png image.png705791625.png



image.png224749755.png

最佳答案

查看完整内容

第二个问题和前文所说的第一个问题一样,SpreadJS 与Excel的差异是 因为这是一个已知的Excel的bug,所以我们无法保持和Excel一样。 在excel中,所有1900/3/1之前的日期都是错误的。 问题是源自: 900/1/0至1900/2/29 你可以看到1900年没有一月十日和二月二十九日。 我们无法去与一个错误的案例保持一致,希望您能理解。

9 个回复

倒序浏览
最佳答案
最佳答案
Fiooona
论坛元老   /  发表于:2020-8-17 14:24:01
来自 8#
第二个问题和前文所说的第一个问题一样,SpreadJS 与Excel的差异是 因为这是一个已知的Excel的bug,所以我们无法保持和Excel一样。
在excel中,所有1900/3/1之前的日期都是错误的。
问题是源自:
900/1/0至1900/2/29
你可以看到1900年没有一月十日和二月二十九日。
我们无法去与一个错误的案例保持一致,希望您能理解。
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-8-17 19:01:29
2#
本帖最后由 Fiooona 于 2020-8-18 11:02 编辑

问题收到,需要进一步调研,预计明早回复您



1 这个问题是SpreaJS 与Excel的差异,OADate的起始日期是1899/12/30。也就是说,0应该转换成1899年12月30日。

SpreadJS是根据标准OADate转换日期,所以将0 转换为 1899/12/30

2您第二个问题还不太理解,可以明确说下您的需求,及复现您问题的步骤。
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
EplanningSoft
初级会员   /  发表于:2020-9-18 15:13:41
3#
Fiooona 发表于 2020-8-17 19:01
问题收到,需要进一步调研,预计明早回复您

比如1月、3月、5月、每个月有31天,用EDATE公式算出来的最大时间,会比Excel的少一天
就是说,计算结果应该是 1900-01-31的,但是spread中得出的却是 1900-01-30
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-9-18 17:09:44
4#
image.png92842406.png
未能复现您的问题,将您的有问题的表单上传下把,方便复现问题
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
EplanningSoft
初级会员   /  发表于:2020-9-18 19:04:50
5#
本帖最后由 EplanningSoft 于 2020-9-18 19:07 编辑
Fiooona 发表于 2020-9-18 17:09
未能复现您的问题,将您的有问题的表单上传下把,方便复现问题

你看我发的截图对比,同样的公式和数据,得出的公式结果是不一样的,spread总会比Excel少一天
并且,1号的上一天应该是31号的,spread里面得出的却是30号,丢了一天
你可以试下,所有是31天的月份计算,得到的都是30号,没有31号
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-9-21 09:36:24
6#
您截图的公式是EDATA(MAX(F9:H9),1), 不知道您F9:H9 具体的值是多少, 我这边模拟的是公式如我截图所示,并没有复现您描述的问题, 还请提供下能复现问题的详细步骤。
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
EplanningSoft
初级会员   /  发表于:2020-9-21 11:08:08
7#
Fiooona 发表于 2020-9-21 09:36
您截图的公式是EDATA(MAX(F9:H9),1), 不知道您F9:H9 具体的值是多少, 我这边模拟的是公式如我截图所示,并 ...

问题1、:EDATE公式中 引用单元格为空时,spreadjs的计算结果 和 Excel不一致
      例:EDATE(MAX(F9:H9),0)  ,  F9 G9 H9都是空的,
             spreadjs中得出的是  1899/12/30
             Excel中得出的是  1900/01/00
问题2、所有每月是31天的月份,spreadjs中,只有30天
      例:EDATE(MAX(F9:H9),1) , F9 G9 H9都是空的,EDATE最后一个参数为1,
             spreadjs中得出的是 1900/01/30
             Excel中得出的是  1900/01/31

这样写能看明白了吗?
归根结底,就是两边的公式得出的值不一致,spreadjs中没有31号
回复 使用道具 举报
EplanningSoft
初级会员   /  发表于:2020-9-21 14:41:29
9#
Fiooona 发表于 2020-9-21 14:25
第二个问题和前文所说的第一个问题一样,SpreadJS 与Excel的差异是 因为这是一个已知的Excel的bug,所以我 ...

目前测试结果,只有内容为空的时候,按以上情况所说 得出的结果不对,有值时候是对的,那就先不纠结这个空值了
麻烦您了!多谢!
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-9-21 14:58:33
10#
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部