พล็อตวันที่และเวลา

ฉันใช้ Excel VBA เพื่อนำเข้าไฟล์ข้อความและวิเคราะห์ข้อมูล

ฉันต้องการแกน x พร้อมรูปแบบวันที่และเวลา

ไฟล์ต้นฉบับมีสตริงสำหรับเวลาต่อไปนี้

"20200324160900340" เช่น "YYYYMMddhhmmss.milliseconds"

ฉันมีฟังก์ชั่นในการลบมิลลิวินาทีและแปลงสตริงนี้เป็นสตริงอื่นด้วยรูปแบบ "2020/03/24 16:09:00"

ในที่สุดฉันก็สามารถพล็อตข้อมูลด้วยค่า Y ได้โดยใช้สิ่งต่อไปนี้:

Set sh = ActiveWorkbook.Worksheets(1)
Set CH1 = sh.ChartObjects(1).Chart

[...]

With CH1

    With .SeriesCollection.NewSeries
        .Values = Elapsed 'Double Values
        .XValues = Time 'String Values format "YYYY-MM-dd hh:mm:ss"
        .Name = File_name
    End With

    .HasTitle = True

    With .Axes(xlCategory, xlPrimary)
        .CategoryType = xlTimeScale
    End With

End With

กราฟถูกพล็อตอย่างถูกต้อง แต่ฉันไม่เห็นค่าเวลา และถ้าฉันบังคับด้วยตนเอง ฉันจะเห็นบางอย่างเช่น "01-01-1900" ซึ่งไร้สาระ


person M.Bolzoni    schedule 25.03.2020    source แหล่งที่มา
comment
ฉันมีฟังก์ชันในการลบมิลลิวินาที... คุณช่วยแก้ไขคำถามของคุณด้วยโค้ดนั้นได้ไหม คำถามของคุณควรมีตัวอย่างที่ทำซ้ำได้น้อยที่สุด   -  person BigBen    schedule 25.03.2020
comment
คุณไม่สามารถลงจุด STRINGS บนแผนภูมิได้ แปลงสตริงเวลาเป็นตัวเลข (ค่าวันที่/เวลา) จากนั้นคุณจะสามารถลงจุดได้   -  person Excel Hero    schedule 25.03.2020


คำตอบ (1)


คุณไม่สามารถลงจุด STRINGS บนแผนภูมิได้ แปลงสตริงเวลาเป็นตัวเลข (ค่าวันที่/เวลา) จากนั้นคุณจะสามารถลงจุดได้อย่างถูกต้อง

ด้านล่างนี้เป็นฟังก์ชัน VBA ที่จะแปลงสตริงข้อความของคุณเป็นค่าวันที่/เวลาของ Excel...

Function TextToDateTime(s)
    Dim yy, mm, dd, hh, mn, ss

    yy = Mid(s, 1, 4)
    mm = Mid(s, 5, 2)
    dd = Mid(s, 7, 2)
    hh = Mid(s, 9, 2)
    mn = Mid(s, 11, 2)
    ss = Mid(s, 13, 2)

    TextToDateTime = DateSerial(yy, mm, dd) + TimeSerial(hh, mn, ss)

End Function

โปรดทราบว่าค่าเหล่านี้จะมีลักษณะคล้ายกับสิ่งนี้: 43914.6729166667

นั่นคือสิ่งที่คุณต้องการ หากคุณต้องการดูค่าวันที่-เวลาในลักษณะที่เป็นมิตรมากขึ้น ให้ใช้การจัดรูปแบบตัวเลขเพื่อสร้างค่าเช่น 2020-03-24 16:09:00

person Excel Hero    schedule 25.03.2020