VBA制作折线图时动态范围含空值对齐X轴的问题求助
解决方案
核心逻辑是统一以X轴数据的总长度为基准,为所有数据系列指定和X轴长度一致、起始列相同的单元格范围,强制包含前端空值,保证两个系列与X轴刻度完全对齐。
修改后的代码如下:
Dim x As Range Dim cli As Range Dim dis As Range Dim colCount As Long ' 存储X轴总列数,作为所有系列的统一长度标准 With Sheets("AF") ' 先确定X轴范围与总长度 Set x = .Range("C2", .Range("C2").End(xlToRight)) colCount = x.Columns.Count ' 两个系列都从C列对应行开始,选满和X轴一致的长度,自动包含前端空值 Set cli = .Range("C3").Resize(1, colCount) Set dis = .Range("C4").Resize(1, colCount) End With With Sheets("PAPM").ChartObjects("Chart 1").Chart .FullSeriesCollection(1).Values = cli .FullSeriesCollection(2).Values = dis ' 统一指定两个系列的X轴数据源,彻底避免刻度错位 .FullSeriesCollection(1).XValues = x .FullSeriesCollection(2).XValues = x End With
关键调整说明
- 移除了冗余的
Select、Activate操作,VBA操作单元格、图表不需要先选中对象,直接引用即可,运行效率更高且不会出现选中位置偏移导致的错误 - 通过
Resize(1, colCount)指定每个系列的范围长度,不受当前行前端空值的影响,保证两个系列的范围长度完全一致,与X轴每个刻度一一对应 - 如果需要折线图自动连接空值位置的断点,可以打开图表设置,在「隐藏和清空单元格」选项中勾选「用直线连接数据点」即可
内容的提问来源于stack exchange,提问作者Esmie
相关产品推荐
相关产品推荐

