Excel VBA创builddate+时间值

在我的表中,我有两列包含types的数据: yyyymmddhhmmddxx – 首先包含date和其他时间精度0.01秒。 所以例如我有2016110217052349

我想转换成一个单一的值显示一个时间,并以dd/mm/yyyy hh:mm:ss.xx ,所以例如我想得到02/11/2016 17:05:23.49 。 我想我需要使用DateSerialTimeSerial函数,但有两个问题我不知道如何去处理:

  1. TimeSerial接受小时,分钟和秒作为参数,都是整数types,如何传递秒的小数部分?
  2. 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()函数,而是将其作为一天中的一小部分进行添加。