График даты и времени

Я использую Excel VBA для импорта текстового файла и анализа данных.

Мне нужна ось x с форматом даты и времени.

Исходный файл включает следующую строку для времени.

"20200324160900340", т.е. "ГГГГММддччммсс.миллисекунды".

У меня есть функция для удаления миллисекунд и преобразования этой строки в другую в формате «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