0

ユーザーがチャートパラメータをいくつかのセルに入力して動的にチャートを作成できるようにするこのコードがあります。多くの系列 (最大 4 つ) は、2 つの垂直 (y) 軸と 1 つの共有水平 (x) 軸で許可されます。グラフは通常、縦棒と横線が混在しており、データ範囲の長さはさまざまです。シリーズを追加するこのコードがあります(関連するコードであると私が信じているものに固執しようとします)

 seriesCount = 1
 If hasSeries1 = True Then
   ActiveChart.SeriesCollection.NewSeries
   ActiveChart.SeriesCollection(seriesCount).Name = .Cells(2, 6) & " " & axisside1
   ActiveChart.SeriesCollection(seriesCount).ChartType = chartType1
   ActiveChart.SeriesCollection(seriesCount).AxisGroup = axisgroup1
   ActiveChart.SeriesCollection(seriesCount).Border.LineStyle = borderStyle1
   ActiveChart.SeriesCollection(seriesCount).Border.Color = lineColor1
   ActiveChart.SeriesCollection(seriesCount).Format.Line.Weight = lineWidth1
   ActiveChart.SeriesCollection(seriesCount).Format.Fill.ForeColor.RGB = seriesColor1
   ActiveChart.SeriesCollection(seriesCount).Format.Line.Visible = hasLine1
   ActiveChart.SeriesCollection(seriesCount).XValues = dates1
   ActiveChart.SeriesCollection(seriesCount).Values = dataset1
   seriesCount = seriesCount + 1
 End If
 If hasSeries2 = True Then
   ActiveChart.SeriesCollection.NewSeries
   ActiveChart.SeriesCollection(seriesCount).Name = .Cells(3, 6) & " " & axisside2
   ActiveChart.SeriesCollection(seriesCount).ChartType = chartType2
   ActiveChart.SeriesCollection(seriesCount).AxisGroup = axisgroup2
   ActiveChart.SeriesCollection(seriesCount).Border.LineStyle = borderStyle2
   ActiveChart.SeriesCollection(seriesCount).Border.Color = lineColor2
   ActiveChart.SeriesCollection(seriesCount).Format.Line.Weight = lineWidth2
   ActiveChart.SeriesCollection(seriesCount).Format.Fill.ForeColor.RGB = seriesColor2
   ActiveChart.SeriesCollection(seriesCount).Format.Line.Visible = hasLine2
   ActiveChart.SeriesCollection(seriesCount).XValues = dates2
   ActiveChart.SeriesCollection(seriesCount).Values = dataset2
   seriesCount = seriesCount + 1
 End If
 If hasSeries3 = True Then
   ActiveChart.SeriesCollection.NewSeries
   ActiveChart.SeriesCollection(seriesCount).Name = .Cells(4, 6) & " " & axisside3
   ActiveChart.SeriesCollection(seriesCount).ChartType = chartType3
   ActiveChart.SeriesCollection(seriesCount).AxisGroup = axisgroup3
   ActiveChart.SeriesCollection(seriesCount).Border.LineStyle = borderStyle3
   ActiveChart.SeriesCollection(seriesCount).Border.Color = lineColor3
   ActiveChart.SeriesCollection(seriesCount).Format.Line.Weight = lineWidth3
   ActiveChart.SeriesCollection(seriesCount).Format.Fill.ForeColor.RGB = seriesColor3
   ActiveChart.SeriesCollection(seriesCount).Format.Line.Visible = hasLine3
   ActiveChart.SeriesCollection(seriesCount).XValues = dates3
   ActiveChart.SeriesCollection(seriesCount).Values = dataset3
   seriesCount = seriesCount + 1
 End If
 If hasSeries4 = True Then
   ActiveChart.SeriesCollection.NewSeries
   ActiveChart.SeriesCollection(seriesCount).Name = .Cells(5, 6) & " " & axisside4
   ActiveChart.SeriesCollection(seriesCount).ChartType = chartType4
   ActiveChart.SeriesCollection(seriesCount).AxisGroup = axisgroup4
   ActiveChart.SeriesCollection(seriesCount).Border.LineStyle = borderStyle4
   ActiveChart.SeriesCollection(seriesCount).Border.Color = lineColor4
   ActiveChart.SeriesCollection(seriesCount).Format.Line.Weight = lineWidth4
   ActiveChart.SeriesCollection(seriesCount).Format.Fill.ForeColor.RGB = seriesColor4
   ActiveChart.SeriesCollection(seriesCount).Format.Line.Visible = hasLine4
   ActiveChart.SeriesCollection(seriesCount).XValues = dates4
   ActiveChart.SeriesCollection(seriesCount).Values = dataset4
 End If

ここに問題があります。チャートは、想定されているデータの一部しか表示しません。データ系列を右クリックし、ヒットSelect Dataして選択するEditと、正しい系列 (x と y の両方) が強調表示されますが、表示されているのはそこにあるはずの一部が切り捨てられたものです。

ここに私が見ているもののサンプルがあります

マイチャート

水色の列のデータの一部を次に示します。

12/30/2005       307%
1/31/2006        302%
2/28/2006        248%
3/31/2006        262%
4/28/2006        285%
5/31/2006        256%
...              ...
...              ...
...              ...
6/30/2014        147%

このデータが 2005 年 12 月 30 日から始まるグラフにどのように表示されるかに注目してください。ただし、2013 年 11 月 30 日から始まっています (ただし、値は 307%、302% など、正しいように見えます)。Excel が 2 番目と 3 番目のデータ系列を最初のデータ系列と同じ長さに強制しているようです。最初のものは正しくチャート化されています。

4

1 に答える 1

0

XY チャートを使用していないと思うので、すべてのシリーズに同じラベル(X 値 = 日付) が必要です。つまり、すべての日付を含む一意の日付セットを作成し、それを (Xvalues として) 最初のシリーズに割り当てる必要があります。

于 2014-09-09T06:40:23.760 に答える