itsource

범위가 아닌 어레이 데이터에서 차트 생성

mycopycode 2023. 4. 12. 22:22
반응형

범위가 아닌 어레이 데이터에서 차트 생성

Ranges가 아닌 Array 데이터로 차트(예: Double Y-Axis Line Chart)를 작성할 수 있습니까?만약 그렇다면, 어떻게?

네. 어레이를 할당하여XValues그리고.Values의 특성Series도표상의 객체예:

Dim c As Chart
Dim s As Series
Dim myData As Variant

Set c = ActiveChart ' Assumes a chart is currently active in Excel...
Set s = c.SeriesCollection(1)

myData = Array(9, 6, 7, 1) ' or whatever
s.Values = myData

Excel 2007 이후로는 그래프 시리즈에 어레이를 할당할 수 있지만 이전 버전에서는 각 시리즈의 길이에 255자 제한이 있는 것으로 알고 있습니다.이 제한을 회피하기 위해 사용한 방법이 다음 랜덤 워크 예시에 나와 있습니다.

Sub ChartArray()

Dim x(0 To 1000, 0 To 0) As Double
Dim y(0 To 1000, 0 To 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 i

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

다른 방법으로는 배열에 이름을 할당한 다음(위의 회피책과 유사) 할당된 이름을 참조하도록 시리즈를 설정하는 방법이 있습니다.xls 형식으로 저장하기만 하면 모든 버전에서 정상 작동하지만 새로운 xlsx/xlsm/xlsb 형식으로 저장할 때 8192자로 명명된 배열에 길이 제한이 있는 것으로 보입니다.

언급URL : https://stackoverflow.com/questions/10570023/create-chart-from-array-data-and-not-range

반응형