애들센스


셀 범위가 아닌 배열로 차트 만들기 오피스/VBA/Office.JS

차트를 그리려면 셀 범위에 데이터가 있어야 하는 게 당연하다. 그러나 반드시 그럴 필요는 없다. 셀 범위 대신 배열을 계열의 데이터로 대신할 수 있다. 다만 엑셀이 아닌 vba가 필요하다. 다음의 코드는 배열을 갖고 차트를 만드는 예이다.
Sub ChartFilledWithArray()
Dim i As Long
Dim x(1000, 0) As Double
Dim y(1000, 0) As Double

x(0, 0) = 0
y(0, 0) = 0

For i = 1 To 1000
x(i, 0) = i
y(i, 0) = y(i - 1, 0) + WorksheetFunction.NormSInv(Rnd())
Next

Charts.Add
ActiveChart.ChartType = xlXYScatterLinesNoMarkers
With ActiveChart.SeriesCollection
If .Count = 0 Then .NewSeries
If Val(Application.Version) >= 12 Then
.Item(1).Values = y
.Item(1).XValues = x
Else
.Item(1).Select
Names.Add "_", x
ExecuteExcel4Macro "series.x(!_)"
Names.Add "_", y
ExecuteExcel4Macro "series.y(,!_)"
Names("_").Delete
End If
End With
ActiveChart.ChartArea.Select

End Sub
데이터 계열 편집 대화상자를 열어 보면, 셀 범위의 주소 대신 배열의 값이 입력되어 있는 것을 볼 수 있다.

덧글

댓글 입력 영역