Excel VBA编程:如何将两个数据源合并到同一个图表中?
解决VBA图表合并两个数据源的问题
你遇到的问题是因为SetSourceData方法会直接替换图表的现有数据源,而非追加内容,所以第二次调用会覆盖第一次的图表数据。下面是两种可行的解决方案:
方法1:手动添加数据系列(推荐,适用于跨工作表数据源)
创建图表后,先设置第一个数据源,再通过NewSeries方法添加第二个数据系列,指定其数据源和名称:
Set rng = Sheets("Before").Range("B1:B11") Set rng2 = Sheets("After").Range("B1:B11") ' 创建图表 Set cht = Sheets("Plot").Shapes.AddChart2 ' 设置第一个数据系列并命名 cht.Chart.SetSourceData Source:=rng cht.Chart.SeriesCollection(1).Name = "Before" ' 添加第二个数据系列 With cht.Chart.SeriesCollection.NewSeries .Name = "After" .Values = rng2 End With
方法2:复制数据到同一工作表后合并
如果允许临时修改工作表数据,可以将两个数据源复制到同一工作表的连续区域,再设置为图表的数据源:
Set rng = Sheets("Before").Range("B1:B11") Set rng2 = Sheets("After").Range("B1:B11") ' 将After的数据复制到Plot工作表的C列(确保该区域为空) rng2.Copy Destination:=Sheets("Plot").Range("C1") ' 合并两个连续区域 Set combinedRng = Union(Sheets("Plot").Range("B1:B11"), Sheets("Plot").Range("C1:C11")) ' 创建图表并设置合并后的数据源 Set cht = Sheets("Plot").Shapes.AddChart2 cht.Chart.SetSourceData Source:=combinedRng
内容的提问来源于stack exchange,提问作者javier
相关产品推荐
相关产品推荐

