基于指定单元格区域匹配图表名称并设置对应图表纵轴最小值
修正VBA代码:按图表名称匹配设置纵轴最小值
你的需求是根据U6:U9中的图表名称,将对应图表的纵轴最小值设为同行V列的值,但现有代码存在逻辑问题:直接按工作表中图表的索引顺序赋值,没有匹配U列的图表名称,而且引用的单元格区域和取值逻辑不对应。
以下是修正后的代码:
Sub SET_MIN_CHART() Application.ScreenUpdating = False Dim sh As Worksheet Dim nameRange As Range, cell As Range Dim targetChart As ChartObject ' 指定目标工作表 Set sh = Worksheets("Foglio1") ' 指定存储图表名称和最小值的区域(U6:V9) Set nameRange = sh.Range("U6:V9") ' 遍历每个图表名称行 For Each cell In nameRange.Columns(1).Cells ' 检查工作表中是否存在该名称的图表 On Error Resume Next Set targetChart = sh.ChartObjects(cell.Value) On Error GoTo 0 If Not targetChart Is Nothing Then ' 为对应图表的纵轴设置最小值 targetChart.Chart.Axes(xlValue).MinimumScale = cell.Offset(0, 1).Value End If Next cell Application.ScreenUpdating = True End Sub
关键修正点:
- 按名称匹配图表:不再依赖图表的索引顺序,而是通过
ChartObjects(单元格值)精准定位目标图表,确保和U列的名称一一对应 - 正确引用最小值:使用
cell.Offset(0,1)获取同行V列的数值,替代原代码中按索引取值的错误逻辑 - 错误处理:加入
On Error语句避免因图表名称不存在导致代码中断 - 缩小引用范围:将数据区域从U6:W9改为U6:V9,只保留需要的图表名称和最小值列
内容的提问来源于stack exchange,提问作者Dario Luca Spitale
相关产品推荐
相关产品推荐

