首页 > 解决方案 > 日期和时间图

问题描述

我正在使用 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”的东西,这是无稽之谈。

标签: excelvbadatetime

解决方案


您不能在图表上绘制 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.


推荐阅读