[英]Excel VBA create a date+time value
在我的表中,我有兩列包含類型為yyyymmdd
和hhmmddxx
-第一列包含日期,另一列時間精確到0.01秒。 所以例如我有20161102
和17052349
。
我想將其轉換為顯示時間的單個值,並以dd/mm/yyyy hh:mm:ss.xx
,因此例如我想獲取02/11/2016 17:05:23.49
。 我想我需要使用DateSerial
和TimeSerial
函數,但是有兩個我不知道如何解決的問題:
可能是這樣的?
? 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
編輯:經過測試后發現格式化降低了幾分之一秒,而只是重復了幾分。 我設計了這個公式來解決。 請注意,此處的公式不會輸出日期時間的序列表示,而只是一個文本字符串。
=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)
先前的反應:
您可以使用以下公式創建序列號:
=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()
函數,而是將其添加為一天的一小部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.