VBA Excel日期和时间图

问题描述 投票:0回答:1

我正在使用excel VBA导入文本文件并从外部代码分析数据。我希望X轴具有DATE + Time格式,以便我还可以按时间比较我的数据。

原始文件包括以下TIME字符串“ 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”的内容,这是没有意义的。

有人可以帮我吗?

提前谢谢您

excel vba date time
1个回答
0
投票

您无法在图表上绘制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的内容。

© www.soinside.com 2019 - 2024. All rights reserved.