2017-11-01 8 views
1

".Values"が別のモジュールから来た 'ReliabilityNumber'という配列に基づいているグラフを作成しています。正しいデータポイントを得るにはすべてうまく動作します。しかし、配列内の要素の数(グラフの 'timesteps')が16384を超えると、この数値を超えるデータポイントはグラフに表示されません。グラフが16384個以上のデータポイントを表示できない

さらに、要素数が65536を超えると、グラフは表示されなくなります。

私はExcelの最大数(Excel 2007以降では16384)と最大行数(Excel 2003以降のバージョンでは65536)と関連があると考えています。しかし、私はそれが何であるか把握することはできません。私のコードは以下の通りです(私は自宅で仕事でエクセル2010を使用し、2016年、問題はまだ2016年のために、この問題を制御しなかったの2010年である):

Dim ReliabilityChart As Object 
Dim ReliabilitySeries As Series 

Set ReliabilityChart = ActiveSheet.ChartObjects.Add(Left:=300, Width:=500, Top:=10, Height:=300) 
    With ReliabilityChart 
    .Chart.Type = xlLine 
    .Left = 600 
    .Width = 800 
    .Top = 50 
    .Height = 300 
    .Name = "ReliabilityChart1" 

    Set ReliabilitySeries = .Chart.SeriesCollection.NewSeries 
     With ReliabilitySeries 
      .Values = ReliabilityNumber 
      .Name = "Reliability on timestep #" 
     End With 

End With 

ActiveSheet.ChartObjects("ReliabilityChart1").Activate 
With ActiveChart 
    .ChartType = xlLine 
    .ChartTitle.Text = "Reliability over time" 
    .Axes(xlCategory).TickMarkSpacing = 1600 
    .Axes(xlCategory).TickLabelSpacing = 1600 
    .Axes(xlValue).MaximumScale = 1 
    .Axes(xlValue).TickLabels.NumberFormat = "0%" 
    .Axes(xlCategory).HasTitle = True 
    .Axes(xlCategory).AxisTitle.Text = "Timestep (#)" 
    .Axes(xlValue).HasTitle = True 
    .Axes(xlValue).AxisTitle.Text = "Reliability (%)" 
End With 

Sheets(1).Range("E10").Select 

答えて

0

は、私はあなたの問題は、長さと関係していると思いますチャートシリーズをプロットするために使用されるSERIES式の配列をワークシートにロードし、その配列のソースとして使用すると、正常に動作するはずです。

+0

私はあなたにSERIESの式が意味することを知らないわけでもありません。しかし、範囲の代わりに配列を使う利点は、ワークシートにデータポイントを必要としないということです。これは計算速度を節約します。特に、多数のデータポイントが使用される場合(> 100.000)。 – MrBaracuda

+0

グラフにプロットされたすべての系列は、SERIES公式を使用して実行されます。大きな配列を使用する場合を除いて、数式バーに表示されます。エラーメッセージが表示されます。配列を使用する場合は、式の配列定数にリテラル値を入れる必要があります。その多くのデータをグラフにプロットしようとすると、パフォーマンスの問題は常に少なくなると思います。 – Rory

関連する問題