excel毫秒、微妙运算

作者:Stephen Du

免责声明: 本文为个人学习笔记及总结,仅代表个人观点,尽可能保证内容准确性。复制/转发请注明来源/作者。

欢迎添加微信交流学习。

在这里插入图片描述

Excel毫秒、微妙特殊格式运算

最近在项目过程中碰到CAN报文需要处理。发现拿到的CAN报文数据是相对时间导出来的。但这不方便分析,需要转成绝对时间。但是导出的时间格式是:0.000.000这种格式。
excel默认时间格式似乎只精确分钟,网上也有一些教程可以通过自定义格式精确毫秒级别的,但我依葫芦画瓢想通过相同方式精确微妙,结果失败了。于是只有自己想办法处理了。
看图:
在这里插入图片描述上图中B列是原始的相对时间,我想处理成绝对时间并以原始格式进行显示(如处理后的C列)。其实也就是将当前行的时间和前面所有行的相对时间累加。但是由于格式问题,无法直接相加,sum这种函数也无法直接处理。最后找到了一种办法,公式如下(以C3单元格为例):
=TEXT(VALUE(SUBSTITUTE(C2,".",""))+VALUE(SUBSTITUTE(B3,".","")),"0!.000!.000")
主要涉及3个函数:SUBSTITUTE,VALUE,TEXT。
函数部分我就不讲解了,都是常用的函数,关键是需要理解思想。

### Excel 中进行毫秒级时间运算的方法 在 Excel 中,默认情况下并不直接支持毫秒级别的精度,但可以通过自定义格式和函数来实现这一目标。为了处理包含毫秒的时间数据,在单元格中输入时间时可以采用 `hh:mm:ss.000` 的格式表示法。 当涉及到更复杂的操作如加减毫秒值或其他形式的运算,则可能需要借助辅助列以及 VBA 宏编程或者 Power Query 来完成更为精确的操作[^1]。 #### 使用公式方法转换并计算带毫秒的时间 如果要简单地增加或减少一定数量的毫秒到现有时间上,可以利用如下方式: 假设 A1 单元格内有一个标准时间字符串 "12:34:56.789"(其中包含了毫秒),那么可以在另一个单元格里写入这样的公式来进行调整: ```excel =A1+(B1/(24*60*60*1000)) ``` 这里 B1 是用来指定想要增减多少毫秒的地方;正数代表向后推移相应量的时间,负数则相反[^2]。 #### 利用VBA宏代码实现更高精度控制 对于更加复杂的需求,编写一段简单的 VBA 脚本来帮助处理可能是更好的选择。下面给出了一段用于将任意给定的时间串解析成带有毫秒的部分,并允许对其进行基本四则运算后再返回新格式化后的结果的例子: ```vba Function TimeWithMilliseconds(t As String, msOffset As Double) As String Dim dt As Date ' 解析传入的时间字符串 t ,将其转化为日期变量dt dt = CDate(Left$(t, Len(t) - 4)) + CDbl(Mid$(t, InStrRev(t, ".") + 1)) / (24 * 60 * 60 * 1000) ' 应用偏移量msOffset (以毫秒计) dt = dt + msOffset / (24 * 60 * 60 * 1000) ' 返回最终的结果,保留三位小数作为毫秒显示 TimeWithMilliseconds = Format(dt, "yyyy-mm-dd hh:mm:ss.fff") End Function ``` 此函数接受两个参数:一个是原始时间字符串(例如 `"2023-10-05 12:34:56.789"`),另一个是要应用在其上的毫秒增量或减量。它会先解析这个字符串得到对应的日期对象,再加上所提供的毫秒差额之后再重新格式化输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值