You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel中ChartObject转Shape图表:避免重叠且合并单系列问题

Excel VBA:改用Shape创建直方图时系列识别异常问题

我当前使用ChartObject在Excel中创建两个直方图,但ChartObject需要指定图表在工作表中的物理位置,而我的应用中这两个图表会被多次生成,因此希望改用Shape对象避免重叠。然而切换后,尺寸和位置均为动态的数据与坐标轴范围被识别为多个独立系列,而非单个系列。我所见的Shape对象示例多使用静态且相邻的范围(如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

内容的提问来源于stack exchange,提问作者kca062

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 01:07:58