我的代码当前使用 ChartObjects 创建 2 个直方图。使用 ChartObject 依赖于您指定在电子表格中物理放置图表的位置(我不希望这样做,因为有 2 个图表,并且这 2 个图表可以在我的应用程序中重复多次)。
我试图将它们从 ChartObject 切换到 Objects,以便它们不重叠,但是当这样做时,系列的数据和轴范围(大小和位置都是动态的)将范围中的每个点解释为自己的系列。在大多数对象示例中,我看到范围是静态的并且直接相邻(例如 A1:B5),但我正在使用的数据并非如此。
如有任何帮助,我们将不胜感激,谢谢!查看快照,其中左侧是所需的图表外观。
请参阅下面的代码
Dim GammaSetChart As ChartObject
Dim GammaSetData As Range, GammaSetAxes As Range
Set GammaSetChart = ws3.ChartObjects.Add(Left:=180, Width:=300, Top:=7, Height:=200)
Set GammaSetData = ws3.Range(ws3.Cells(2 + emptyRow, num_sims + num_sims2 + 2), ws3.Cells(2 + emptyRow + num_source_bins, num_sims + num_sims2 + 2))
GammaSetChart.Chart.SetSourceData Source:=GammaSetData
Set GammaSetAxes = ws3.Range(ws3.Cells(2 + emptyRow, 1 + num_sims), ws3.Cells(num_source_bins + 1 + emptyRow, 1 + num_sims))
GammaSetChart.Chart.SeriesCollection(1).XValues = GammaSetAxes
Dim SimChart As Object
Dim SimData As Range, SimAxes As Range
'Set SimChart = ws3.ChartObjects.Add(Left:=180, Width:=300, Top:=7, Height:=200)
Set SimChart = ws3.Shapes.AddChart2
Set SimData = ws3.Range(ws3.Cells(4 + emptyRow + num_source_bins, num_sims + 3), ws3.Cells(4 + emptyRow + num_source_bins + num_sim_set_bins, num_sims + 3))
'Set SimData = ws3.Range(ws3.Cells(2 + emptyRow, num_sims + num_sims2 + 2), ws3.Cells(2 + emptyRow + num_source_bins, num_sims + num_sims2 + 2))
SimChart.Chart.SetSourceData Source:=SimData
Set SimAxes = ws3.Range(ws3.Cells(4 + emptyRow + num_source_bins, 1 + num_sims), ws3.Cells(3 + emptyRow + num_source_bins + y, 1 + num_sims))
'Set GammaSetAxes = ws3.Range(ws3.Cells(2 + emptyRow, 1 + num_sims), ws3.Cells(num_source_bins + 1 + emptyRow, 1 + num_sims))
SimChart.Chart.SeriesCollection(1).XValues = SimAxes