1

В настоящее время работает над сценарием VBA, который делает графики автоматически. Я хотел бы добавить таблицу данных, которая делается с помощью:.HasDataTable = True

Однако я хотел бы показать значения ряда в процентах. В настоящее время значение определяется как Double, содержащий все значения, но не правильное форматирование.

Использование Format() или FormatPercent() даст правильные значения, но будет возвращено в виде строки. Это работает для данных, но не для самого графика, так как он больше не распознает значения.

Мой вопрос сводится к тому, можно ли отображать значения в процентах как для таблицы данных, так и для диаграммы? Без VBA это легко сделать, отформатировав данные в самих ячейках. Проблема в том, что для форматирования возвращается строка, но для графа необходимы целые или двойные числа.

Любая помощь приветствуется, и, пожалуйста, дайте мне знать, если вопрос неясен.

Ниже приведена часть кода. Если я затемню Ratio как String и использую FormatPercent(), я получу запрошенное форматирование, но тогда значения в Ratio ar больше не удваиваются, поэтому он не дает требуемой диаграммы.

Dim Ratio() As Double   
Dim labels() As String

ReDim Ratio(1 To Height)
ReDim labels(1 To Height)


For Each Column In sArray
        labels(i) = Sheets(DataSheetName).Cells(LabelsRow, Column)
        Ratio(i) = Math.Round(Sheets(DataSheetName).Cells(LabelsRow + 3, Column), 2)
        i = i + 1
Next Column


Set myChtObj = Sheets(DrawSheetName).ChartObjects.Add(Left:=Left, Width:=Width, Top:=Top, Height:=HeightGraph)

Dim srsNew1 As Series

 ' Add the chart
With myChtObj.Chart
    .ChartArea.Fill.Visible = False
    .ChartArea.Border.LineStyle = xlNone
    .PlotArea.Format.Fill.Solid
    .PlotArea.Format.Fill.Transparency = 1
    .HasTitle = True
    .ChartTitle.text = Title
    .HasLegend = False

    .Axes(xlValue).TickLabels.NumberFormat = "0%"
    .Axes(xlCategory, xlPrimary).HasTitle = False

    'add data table
    .HasDataTable = True

     ' Make Line chart
    .ChartType = xlLine


     ' Add series
    Set srsNew1 = .SeriesCollection.NewSeries
    With srsNew1
        .Values = Ratio
        .XValues = labels
        .Name = "Ratio"
        .Interior.Color = clr3 'RGB(194, 84, 57)
    End With


End With

В дополнение к вышесказанному. Картинка ниже может лучше всего иллюстрировать то, что я хочу.

0