找回密码
 立即注册
搜索
查看: 1770|回复: 18

[软件] excel时间自动填充误差怎么避免?

[复制链接]
     
发表于 2019-1-4 18:00 来自手机 | 显示全部楼层 |阅读模式
就算用round依然有误差,导致无法检索对应数据。
就算用公式等差,五分钟加12次,和直接加一个小时出来的数也不同…导致精确查找函数完全没法用
回复

使用道具 举报

     
发表于 2019-1-4 18:15 | 显示全部楼层
用时间戳试试?
回复

使用道具 举报

     
发表于 2019-1-4 22:51 | 显示全部楼层
没听懂你在说啥
例子说详细点不行么

  -- 来自 有消息提醒的 Stage1官方 Android客户端
回复

使用道具 举报

     
 楼主| 发表于 2019-1-5 01:38 | 显示全部楼层
本帖最后由 whatd 于 2019-1-5 02:03 编辑
Elrcat 发表于 2019-1-4 18:15
用时间戳试试?

刚搞懂时间戳,不过这种位数太大的在EXCEL里面都得变成科学计数法....不过倒是提醒我转换成MMDDHHMM形式的文本应该可以避免这样的误差,不过这样就无法直接运算时间了...

不过十几万的数据.... 无论用INDEX还是VLOOKUP匹配都得卡。有啥工具能够让有点EXCEL基础的人快速上手的
果然还是数据库技能必须么....
回复

使用道具 举报

     
 楼主| 发表于 2019-1-5 01:51 | 显示全部楼层
本帖最后由 whatd 于 2019-1-5 02:01 编辑
hamano_taiki 发表于 2019-1-4 22:51
没听懂你在说啥
例子说详细点不行么

EXCEL的时间(数据)自动填充(出现的)误差怎么避免?

(自动填充的数据)就是用round(函数进行四舍五入)依然有误差,导致无法(使用精确匹配函数来精确)检索对应的(时间)数据。

就算用公式(自动填充构建)等差(数列),(将)五分钟(作为公差),(对a1作为初始数据)加12次(得到的数据),和直接(将a1)加一个小时出来的数(据)也不同(在小数点后8位左右开始有偏差)...导致(在EXCEL中被认为是两个不相等的数据),(使用)精确查找函数(无法找到对应响应的数据)完全没法用。

(2019-1-1 0:00)+(0:05)*12=43466.0416666666
(2019-1-1 0:00)+(1:00)      =43466.0416666667
回复

使用道具 举报

     
发表于 2019-1-5 12:05 | 显示全部楼层
whatd 发表于 2019-1-5 01:51
EXCEL的时间(数据)自动填充(出现的)误差怎么避免?

(自动填充的数据)就是用round(函数进行四舍五 ...

计算过程用时间戳,显示和最终结果还是按时间格式呀,你时间格式精确到秒
回复

使用道具 举报

头像被屏蔽
发表于 2019-1-5 14:01 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2019-1-5 14:19 | 显示全部楼层
whatd 发表于 2019-1-5 01:51
EXCEL的时间(数据)自动填充(出现的)误差怎么避免?

(自动填充的数据)就是用round(函数进行四舍五 ...

匹配公式不能用round来确定匹配位数吗?
还是round对60进制的舍入支持不行?
回复

使用道具 举报

     
发表于 2019-1-5 14:28 | 显示全部楼层
whatd 发表于 2019-1-5 01:51
EXCEL的时间(数据)自动填充(出现的)误差怎么避免?

(自动填充的数据)就是用round(函数进行四舍五 ...

或者用 TEXT(时间单元格,"yyyy/m/d h:mm:ss.00;@") 来转化成文本之后匹配
转化成文本的过程自动进行舍入,文本格式的最大精度貌似是秒后3位(公式中0的个数)
回复

使用道具 举报

     
 楼主| 发表于 2019-1-5 14:37 | 显示全部楼层
antiultima 发表于 2019-1-5 14:19
匹配公式不能用round来确定匹配位数吗?
还是round对60进制的舍入支持不行? ...

不知道,像楼上说的一样吧,我round到8位还是有误差,但是继续缩小位数的话,时间本身就会改变了,所以这大概是EXCLE时间格式的天生缺陷吧。反正我没辙了,要么就时间戳了,不过1970年时间太长了,会变成科学计数法。

目前想到的只能自己定一个时间起点,然后精确到分钟数,然后通过辅助用公式列转换成看得懂的格式,不过这十几万的数据量,用我自己的9900k都能卡成SB,办公室的I3没办法了.....

而且看半天powerquery还是没看懂怎么操作,我还想对两个时间中间的时间进行对应的插值,然后再查询.......
回复

使用道具 举报

     
 楼主| 发表于 2019-1-5 14:40 | 显示全部楼层
Elrcat 发表于 2019-1-5 12:05
计算过程用时间戳,显示和最终结果还是按时间格式呀,你时间格式精确到秒 ...

秒数据显示不出来了,也不需要精确到秒,我精确到分钟自己弄个时间体系,powerquery有快速上手的操作教程么,急着对数据要交了....
回复

使用道具 举报

     
 楼主| 发表于 2019-1-5 14:46 | 显示全部楼层
antiultima 发表于 2019-1-5 14:28
或者用 TEXT(时间单元格,"yyyy/m/d h:mm:ss.00;@") 来转化成文本之后匹配
转化成文本的过程自动进行舍入 ...

这个问题暂时没问题了,现在的问题是,十几万的数据量太大,查找匹配在低配置直接卡死,正在找点别的上手容易的类数据库工具。
回复

使用道具 举报

     
发表于 2019-1-5 16:35 来自手机 | 显示全部楼层
不要用等于,用数值差的绝对值小于多少来判定
回复

使用道具 举报

     
 楼主| 发表于 2019-1-6 10:41 | 显示全部楼层
win8 发表于 2019-1-5 16:35
不要用等于,用数值差的绝对值小于多少来判定

EXCEL里哪个函数能这样查找?
回复

使用道具 举报

     
发表于 2019-1-8 16:08 | 显示全部楼层
whatd 发表于 2019-1-5 01:51
EXCEL的时间(数据)自动填充(出现的)误差怎么避免?

(自动填充的数据)就是用round(函数进行四舍五 ...

这个是浮点数精度不够的问题
EXCEL下尝试用时间戳解决问题
不然可以尝试一下用annaconda搭配pandas的period来建立时间索引
可以规避EXCEL的日期时间是用浮点数存储的问题
回复

使用道具 举报

     
发表于 2019-1-8 16:26 来自手机 | 显示全部楼层
whatd 发表于 2019-1-6 10:41
EXCEL里哪个函数能这样查找?

abs(time1-time2)<0.0000001  来代替 time1=time2这样吧
回复

使用道具 举报

头像被屏蔽
     
发表于 2019-1-8 16:36 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
 楼主| 发表于 2019-1-8 21:21 | 显示全部楼层
hamano_taiki 发表于 2019-1-8 16:08
这个是浮点数精度不够的问题
EXCEL下尝试用时间戳解决问题
不然可以尝试一下用annaconda搭配pandas的peri ...

我觉得我得先去学个数据库和PYTHON.....

不是码工,但是老这样处理数据也是烦。
回复

使用道具 举报

     
发表于 2019-1-9 09:29 | 显示全部楼层
whatd 发表于 2019-01-08 21:21:44
我觉得我得先去学个数据库和PYTHON.....

不是码工,但是老这样处理数据也是烦。 ...
pandas可以直接读写Excel文件
就照着案例学一点读写Excel
以及建立时间序列的操作即可
过程就是
读Excel
给数据表增加时间序列作为索引
写回Excel
其他都不用深究
一般Excel技术能懂点index之类函数的水平
学这些内容就算加上学一丁点Python基础
也不过两三天吧
网上可能还有些手把手教程的

  -- 来自 能搜索的 Stage1官方 Android客户端
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-11-17 03:07 , Processed in 0.120688 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表