找回密码
 立即注册

QQ登录

只需一步,快速开始

qujun

注册会员

4

主题

9

帖子

51

积分

注册会员

积分
51
最新发帖
qujun
注册会员   /  发表于:2023-3-21 18:26  /   查看:1776  /  回复:4
1金币
有一个问题想请教论坛大佬,我有两个日期,这两个日期从后端获取的,有另一个单元格对它进行MAX 求这两个日期的最大值,请问为什么求的值不对。当我手动触发一下这个单元格,使它处在编辑状态(值未变)计算的结果又是正常的,请问要怎么处理?
有问题的EXCEL 附件已上传



image.png98159789.png

image.png614157409.png

MAX 日期计算问题.xlsx.zip

8.34 KB, 下载次数: 150

最佳答案

查看完整内容

我看到你的截图中使用过的是excel,也就是说excel也是存在相同问题的。 先说问题原因:两个日期单元格实际上都是文本字符串。而不是日期,这导致Max结果的错误(这个结果需要特殊说明一下,是由于你设置了日期格式才会显示为1900-1-1,否则默认应该显示为0) 对于excel,在你进入编辑状态时,此单元格文本会被转为日期,所以即使你点击进入编辑的是C1,最大值也是C1,因为B1仍是字符串 对于spreadjs,编辑时不会做自动转换 ...

4 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-21 18:26:35
来自 3#
本帖最后由 Richard.Ma 于 2023-3-22 14:36 编辑

我看到你的截图中使用过的是excel,也就是说excel也是存在相同问题的。

先说问题原因:两个日期单元格实际上都是文本字符串。而不是日期,这导致Max结果的错误(这个结果需要特殊说明一下,是由于你设置了日期格式才会显示为1900-1-1,否则默认应该显示为0)

对于excel,在你进入编辑状态时,此单元格文本会被转为日期,所以即使你点击进入编辑的是C1,最大值也是C1,因为B1仍是字符串

对于spreadjs,编辑时不会做自动转换,所以仍维持原有计算结果
回复 使用道具 举报
qujun
注册会员   /  发表于:2023-3-21 18:30:38
2#
公式写错了 B2的公式应该是 =MAX(B1,C1) ,但是不影响BUG复现
回复 使用道具 举报
qujun
注册会员   /  发表于:2023-3-22 14:37:29
4#
Richard.Ma 发表于 2023-3-22 14:34
这个并不是bug,我看到你的截图中使用过的是excel,也就是说excel也是存在相同问题的。

先说问题原因: ...

这种日期的值都是后端获取的 YYYY-MM-DD 格式,那有没有办法导入这种格式的日期值时,表格能识别的识别是日期格式并且进行运算呢 ?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-22 14:47:03
5#
所以现在的问题是,这个文件是如何生成的,比如通过spreadjs或者gcexcel来创建workbook并导出xlsx,在通过代码设置单元格值时,本身就是要设置为日期对象,而非字符串。这样自然就不会有这个问题了。

具体操作上,你可以通过你的日期字符串。转换成日期对象来设置为单元格值即可

如果你是通过其他第三方工具创建的xlsx文件,那么你得自己找对应的文档了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部