Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态excel图表不会显示所有数据_Excel_Excel Charts_Vba - Fatal编程技术网

动态excel图表不会显示所有数据

动态excel图表不会显示所有数据,excel,excel-charts,vba,Excel,Excel Charts,Vba,我有这段代码,允许用户在一些单元格中输入图表参数并动态创建图表。允许在两个垂直y轴和一个共享的水平x轴上使用最多四个系列。图表通常是列和线的混合体,数据范围的长度不同。我有这段代码,它添加了一系列类似的内容,所以我会尽量坚持我认为相关的代码 seriesCount = 1 If hasSeries1 = True Then ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(seriesCount

我有这段代码,允许用户在一些单元格中输入图表参数并动态创建图表。允许在两个垂直y轴和一个共享的水平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
问题是:图表只显示它应该显示的部分数据。当我右键单击数据序列,点击选择数据并选择编辑,正确的序列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强制第二和第三个数据系列与第一个数据系列的长度相同一样。第一个是正确绘制图表。

我认为您没有使用XY图表,因此每个系列的标签Xvalues=日期必须相同。这意味着您需要创建一个包含所有日期的唯一日期集,并将其作为Xvalues分配给第一个系列。

dataset1到dataset4的值是多少?@L42它们是与相应日期*范围的长度相匹配的任意长度的范围。图表以何种方式被截断?张贴图表的图像。图表轴的最大值是多少?它们是否包含整个数值范围?好的。但它们是否返回了正确的目标范围。当您选择数据并编辑时,您期望的实际数据范围是否全部高亮显示?刚刚看到您的编辑。我想这和轴心国的任务有关。你可能在这里有所了解。我正在调查此事,会给你回电的。看来你一针见血。非常感谢。让我烦恼的是,这似乎妨碍了我处理列或行。在制图方面,excel似乎不是最灵活的。