ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

   
高效办公必会的Office实战技巧 永久免费,网表让Excel秒变数据库 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! 国内首部Excel函数公式学习大典 职场充电黑科技, Office微视频教程 免费下载Excel行业应用视频
300集Office 2010微视频教程 Tableau-数据可视化工具 突破Excel限制,用活字格提高效率 12门Excel免费公开课任你学
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 免费的Excel考勤计算系统
查看: 121|回复: 7

[求助] 用mod/datediff算时间差,结果都有错误 (已解决)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-5-18 19:00 | 显示全部楼层 |阅读模式
本帖最后由 oonly 于 2017-5-18 20:59 编辑

QQ图片20170518185807.png

如果时间大于23点50分和小于0点10分,应该就有算错的可能
我用了mod 和datediff 来算也不对,请帮忙修改一下,谢谢!
这个问题已经困扰我好几天了.

用datediff 和DateAdd 一起解决了

TA的精华主题

TA的得分主题

发表于 2017-5-18 19:43 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2017-5-18 20:14 | 显示全部楼层
datediff这个,在b=range("b" &i)下面加一句:if b<a then b=b+1
mod这个,不仅需要考虑结束时间小于开始时间的情况,还有像0:0:9~0:0:32,这个mod出来确实是5,只要结束时间相比开始时间相差一倍以上,mod出来的必然不是差值;建议不要用mod,或者改成直接b-a的方式,同样也需要判断如果b<a的情况;

TA的精华主题

TA的得分主题

发表于 2017-5-18 20:19 | 显示全部楼层
把时间分解为两部分,小时与分钟,小时乘60,再加分钟就是总分钟,两个总分钟相减就是时间差。如果开始分钟大于结束分钟,可以考虑24小时乘60减开始分钟,再加上第二天的总分钟。

TA的精华主题

TA的得分主题

发表于 2017-5-18 20:44 | 显示全部楼层
为什么用 x= b mod a 呢,如果A是2:22 , B是4:44,那结果不是0吗

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-5-18 20:55 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-5-18 20:56 | 显示全部楼层
DevilW 发表于 2017-5-18 20:44
为什么用 x= b mod a 呢,如果A是2:22 , B是4:44,那结果不是0吗

mod 在工作表函数中计算正确,所以才试试vba中的mod
谢谢,用datediff 和DateAdd 一起解决了

TA的精华主题

TA的得分主题

发表于 2017-5-18 21:07 | 显示全部楼层
本帖最后由 DevilW 于 2017-5-18 21:20 编辑

如果你只是提取分钟数,可以这样
Sub test()
a = [a1]
b = [b1]
If a > b Then b = b + 1
[c1] = (b - a) * 1440 Mod 60
End Sub

您需要登录后才可以回帖 登录 | 免费注册 新浪微博登陆

本版积分规则

关闭

最新热点上一条 /1 下一条

关注官方微信,每天坐享新鲜教程

手机版|关于我们|联系我们|ExcelHome   

GMT+8, 2017-9-24 11:08 , Processed in 0.105836 second(s), 22 queries , Gzip On, MemCache On.

Powered by Discuz! X3.3

© 2001-2017 Wooffice Inc.

   

沪公网安备 31011702000001号 沪ICP备11019229号

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:徐怀玉律师 李志群律师

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