В настоящее время работает над сценарием 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
В дополнение к вышесказанному. Картинка ниже может лучше всего иллюстрировать то, что я хочу.