현재 차트를 자동으로 만드는 vba 스크립트 작업 중입니다. .HasDataTable = True를 사용하여 수행되는 데이터 테이블을 추가하고 싶습니다.
그러나 시리즈의 값을 백분율로 표시하고 싶습니다. 현재 값은 모든 값을 포함하지만 올바른 형식이 아닌 Double로 정의됩니다.
Format () 또는 FormatPercent ()를 사용하면 올바른 값을 제공하지만 문자열로 반환됩니다. 이것은 더 이상 값을 인식하지 못하기 때문에 데이터 테이블에서는 작동하지만 차트 자체에서는 작동하지 않습니다.
내 질문은 데이터 테이블과 차트 모두에서 값을 백분율로 표시 할 수 있는지 여부에 달려 있습니다. VBA가 없으면 셀 자체의 데이터를 형식화하여 쉽게 수행 할 수 있습니다. 문제는 문자열 형식화를 위해 반환되지만 그래프 정수 또는 복식이 필요하다는 것입니다.
도움이 필요하면 질문이 확실하지 않은 경우 알려주십시오.
아래는 코드의 일부입니다. 비율을 문자열로 어둡게하고 FormatPercent ()를 사용하면 요청 된 형식을 얻지 만 비율 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
위의 추가. 아래 그림은 내가 원하는 것을 가장 잘 보여줍니다.
문자열을 이중으로 변환하려면 VBScript 함수 CDbl을 사용할 수 있습니다. 답이 분명하지 않은 경우 알려주십시오. :)
—
duDE
안녕하십니까, 답변 주셔서 감사합니다. 문자열의 값이 true double 인 경우 작동합니다 (예 : 2.67). 그러나 문자열에는 이제 267 %의 값이 포함되며이 값은 다시 이중으로 변환 될 수 없습니다. 아마도 내 질문을 바꿔야 할 수도 있습니다. 차트에는 두 배의 실제 값이 포함되어야합니다. 그러나 또한 데이터 테이블을 값을 백분율로 표시하도록 형식화하고 싶습니다.
—
WhoKnows19
이 스크립트의 적절한 부분을 질문에 추가 할 수 있습니까? 도움이 될 것입니다.
—
duDE
그냥 떨어 뜨리고
—
Raystafarian
%
사용하십시오.format
죄송합니다. 혼란 스럽습니다.
—
Raystafarian
each column
시트에서 dblArr 및 strArr를 채우는 데 사용 합니다. 그런 다음 해당 배열로 새 시리즈를 만듭니다. 예? 그리고 문제는 strArr이 축 형식과 일치하지 않는다는 것입니다.