簡體   English   中英

Excel VBA創建日期+時間值

[英]Excel VBA create a date+time value

在我的表中,我有兩列包含類型為yyyymmddhhmmddxx -第一列包含日期,另一列時間精確到0.01秒。 所以例如我有2016110217052349

我想將其轉換為顯示時間的單個值,並以dd/mm/yyyy hh:mm:ss.xx ,因此例如我想獲取02/11/2016 17:05:23.49 我想我需要使用DateSerialTimeSerial函數,但是有兩個我不知道如何解決的問題:

  1. TimeSerial接受小時,分鍾和秒作為參數,都是Integer類型,如何將一秒的分數傳遞給它?
  2. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM