【问题标题】:Using VBA to name ranges and create charts with those ranges使用 VBA 命名范围并使用这些范围创建图表
【发布时间】:2014-04-28 17:59:44
【问题描述】:

我是 VBA 新手。我正在尝试使用两列信息创建超过 500 个 xlClusteredColumn 图表,并且我想加快这项工作。第一列包含我想用于命名范围的名称(即:Line1Line2 等),第二列包含数据范围的间接引用(即Sheet1!C4:D28Sheet1!C28:D90)。我注意到,如果我为“图表数据系列”字段使用命名范围,数据会很好地显示(但我必须首先创建该命名范围,确保在参考中包含 INDIRECT 公式,(例如:命名范围 Line1 等于 =INDIRECT(Sheet1!C4:C28))。范围将是静态的。

在查看之前的问题时,我似乎找不到一个解决方案,可以选择该集合中的第一个单元格并为其命名,然后使用第二个单元格来定义该范围。我想我可能需要ActiveWorkbook.Names.Add Name:= 公式并将其与循环组合(但我无法让它使用选择或单元格来定义添加名称方面,只有硬编码名称)。

如果解决方案需要,我可以返回并从单元格中提取各个范围(即:C4:D28),并且仅在它使代码更简单的情况下提供图表参考。我知道我的第一次概述尝试并不是唯一的解决方案,而且可能还有一个更优雅的解决方案。我认为使用命名范围会加快图表的工作,但也许有办法减少这一步?

用这些范围中的每一个的所有图表填充新工作表将是锦上添花,但我会很高兴收到帮助以将数据设置为图表。

示例信息:

NameRange1(假设在单元格 A1:A4 中)

  • WKD_1_NB
  • WKD_2_EB
  • WKD_3_EB
    SerRange1(在单元格 B1:B4 中)
  • WKDpivot!C4:D43
  • WKDpivot!C84:D140
  • WKDpivot!C197:D233

    (图表数据范围需要命名范围“WKD_1_NB”的引用为 '=INDIRECT(WKDpivot!C4:D43)' 才能使图表正常工作。

  • 【问题讨论】:

    • 鉴于范围不需要是动态的,为什么不直接使用 Insert|Name|Define 命名范围。
    • 嗨@PA,感谢您的建议。我有 546 个范围(和图表),所以如果我可以做一些事情来迭代这个过程,它将加快这个过程。
    • 哦,我明白了,这改变了很多...用新信息编辑您的问题,
    • 不确定我是否理解您为什么需要使用Indirect 函数。你能详细说明一下吗?

    标签: vba excel charts range


    【解决方案1】:

    好的,为什么不尝试两步过程。我将在没有Indirect 的情况下执行此操作,因为我认为没有必要。

    Sub CreateNames()
    Dim rng As Range
    Dim r As Range
    Dim myName As String
    Dim addr As String
    
    Set rng = Range("A1:A2") '## Modify as needed
    For Each r In rng.Cells
        myName = r.Value
        addr = "=" & r.Offset(0, 1).Value
        ThisWorkbook.Names.Add myName, addr
    
    Next
    
    End Sub
    

    这会创建您的姓名(屏幕截图)。请注意,关于命名约定和允许的名称等有一些规则,上面的代码没有考虑任何这些。

    从那里创建一个循环来逐个添加图表并将每个命名范围分配给每个图表应该相当简单。

    【讨论】:

    • 非常感谢!我花了一点时间才意识到我必须确保将这些名称和范围放在页面顶部的新工作表上,没有标题(或更改偏移值),并且我认为还有 Use Relative参考关闭,但这似乎可以快速完成我所有的范围。你是对的,一旦通过你的方法创建了范围,就不需要 INDIRECT 函数。非常感谢您的帮助!
    • 您可以有标题,只需从“A2”(或其他任何地方!)而不是“A1”开始范围。如果引用位于不同的列等,您也可以使用不同的偏移值。干杯!
    • 你是对的,因为我一直在研究它,看起来我在运行模块时需要将光标放在 A1 中,尽管我添加了绝对引用 ($) 所以我对什么改变了什么不是很科学。我正在玩弄偏移值和范围的变化,看看它是如何表现的。无论如何,多亏了你,我完成了所有 549 个参考!
    猜你喜欢
    • 2021-01-08
    • 2021-11-20
    • 2011-09-07
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多