Excel VBA创builddate+时间值
在我的表中,我有两列包含types的数据: yyyymmdd
和hhmmddxx
– 首先包含date和其他时间精度0.01秒。 所以例如我有20161102
和17052349
。
我想转换成一个单一的值显示一个时间,并以dd/mm/yyyy hh:mm:ss.xx
,所以例如我想得到02/11/2016 17:05:23.49
。 我想我需要使用DateSerial
和TimeSerial
函数,但有两个问题我不知道如何去处理:
- TimeSerial接受小时,分钟和秒作为参数,都是整数types,如何传递秒的小数部分?
- DateSerial将创build我的一天,TimeSerial将创build我的时间,是否有一个函数,需要date和时间作为参数,并创build一个单一的“那一天,在那个时候”值呢?
这样的事情,也许?
? generate_timestamp("20161102","170522349")
给
02/11/2016 17:05:23.49
Function GENERATE_TIMESTAMP(strDate As String, strTime As String) As String Dim dtDate As Date Dim dtTime As Date dtDate = DateSerial(Mid(strDate, 1, 4), Mid(strDate, 5, 2), Mid(strDate, 8, 2)) dtTime = TimeSerial(Mid(strTime, 1, 2), Mid(strTime, 3, 2), Mid(strTime, 6, 2)) GENERATE_TIMESTAMP = FormatDateTime(dtDate, vbShortDate) & " " & _ FormatDateTime(dtTime, vbLongTime) & "." & _ Mid(strTime, 8, 2) End Function
编辑:经过testing发现格式是下降秒的分数,只是重复分数。 我devise了这个公式来解决。 请注意,这里的公式不会输出date时间的串行表示,而只是一个文本string。
=TEXT(DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2))+TIME(LEFT(B1,2),MID(B1,3,2),MID(B1,5,2)),"m/d/yyyy hh:mm:ss")&"."&RIGHT(B1,2)
以前的回复:
您可以使用以下公式创build序列:
=DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2))+TIME(LEFT(B1,2),MID(B1,3,2),MID(B1,5,2))+(RIGHT(B1,2)/(24*60*60*100))
然后把你的单元格格式化为m / d / yyyy hh:mm:ss.ss。 在这里,我不是将秒的小数部分传递给TIME()
函数,而是将其作为一天中的一小部分进行添加。