VBA设置Excel图表数据源时如何正确选取非连续列
问题原因
原有代码中Range("B1:B2", "E1:E3")属于Range对象的双参数调用写法,会返回以两个输入区域为对角边界的最小矩形连续区域,因此最终选中的是B列到E列的连续范围,无法得到非连续多区域结果。
实现方法
要选取非连续列作为图表数据源,可选择以下任意一种写法:
- 写法1:将非连续区域地址放在同一个引号内,用逗号分隔
这种写法最简洁,直接在Range参数中传入带逗号分隔的多区域地址即可,VBA会自动识别为联合区域:ActiveChart.SetSourceData Source:=Sheets("Data").Range("B1:B2,E1:E3"), _ PlotBy:=xlColumns - 写法2:使用
Union函数显式合并多个非连续区域
适合需要动态调整选取列的场景,可读性和可扩展性更强:Dim targetRng As Range With Sheets("Data") Set targetRng = Union(.Range("B1:B2"), .Range("E1:E3")) End With ActiveChart.SetSourceData Source:=targetRng, PlotBy:=xlColumns
注意:作为数据源的非连续子区域需要保持行数一致,否则会出现图表系列匹配错位的问题。
内容的提问来源于stack exchange,提问作者Shahreza
相关产品推荐
相关产品推荐

