跨越Excel 60进制栅栏
时间:2008-04-03 08:54:02
作者:officeba 【认证】
郭子君:我在用Excel 计算时间之和时发现,如果运算的结果超出60 分钟,Excel 会“ 智能” 地舍去60 或运行的结果根本就不是我期望的格式,可在实际工作中又经常会用到这些运算。如某人从甲地到乙地需要47 分32 秒,从乙地到丙地需要21 分05 秒,那如何计算跑完全程所需的时间总长度呢?
答:Excel 中的确没有提供这方面的功能,但利用自定义函数,可以满足你的需求。按组合键“ Alt+F11 ” 打开VBA 编辑器,单击“ 插入” 菜单中的“ 模块” 命令,在当前的工作簿中插入一个模块,在默认的“ 模块1 ” 中定义一个名为“ TimeAdd ” 的自定义函数,自定义函数的代码下载地址:http://download.cpcw.com 。
小提示:代码中用到了Split 函数,该函数可以把字符串按指定的分隔符分割成若干个部分并保存到相应的数组变量中去。这样就突破了常规方法中用Left 、Mid 、Right 函数只能提取两位数时间的限制,也解决了用Hour 、Minute 、Second 函数提取时间时不能超过60 分钟和60 秒钟的限制,3 位数以上时间也一样运算,非常的方便。
关闭VBA 编辑器返回到Excel 工作表中,此时利用TimeAdd 函数就可以方便地计算出两段时间之间的和了(见图)。
若要计算两个时间之间的差值,可再定义一个函数TimeDec ,将代码中的“ newtime = atime + btime ” 改为“ newtime=atime - btime ” ,代码末尾一行的变量“ timeadd ” 改为“ timedec ” 就可以了。