我是VBA的新手。我尝试使用两列信息创建超过500个xlClusteredColumn图表,并且我希望加快工作。第一列包含我希望用于命名范围的名称(即: Line1 , Line2 等),第二列包含其间接引用数据范围(即Sheet1!C4:D28
,Sheet1!C28:D90
)。我注意到,如果我使用一个命名范围的"图表数据系列"字段,数据很好地显示(但我必须首先创建命名范围,确保在引用中包含INDIRECT
公式,(例如:命名范围 Line1 等于{{ 1}})。范围将是静态的。
在回顾先前的问题时,我似乎无法找到一个解决方案来选择该集合中的第一个单元格并命名它,然后使用第二个单元格来定义该范围。我想我可能需要=INDIRECT(Sheet1!C4:C28)
公式并将其与循环结合(但我无法使用选择或单元格来定义添加名称方面,只有硬编码名称)。
如果解决方案需要它,我可以返回并从单元格中提取单个范围(即:ActiveWorkbook.Names.Add Name:=
)并仅使图表引用,如果它使代码更简单。我知道我的第一个概述尝试不是唯一的解决方案,而且可能更优雅。我认为使用命名范围可以加快图表的工作速度,但也许有一种方法可以减少这一步骤?
使用所有这些范围的图表填充新工作表将是锦上添花,但我很乐意接受帮助以将数据设置为图表。
示例信息:
NameRange1 (让我们在单元格A1:A4中说出来)
(图表数据范围需要引用命名范围" WKD_1_NB"为' =间接(WKDpivot!C4:D43)'以使图表有效。
答案 0 :(得分:0)
好的,为什么不尝试这两个步骤。我将在没有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
这会创建你的名字(截图)。请注意,有一些关于命名约定和允许名称等的规则,上面的代码不会考虑任何这些。
从那里创建一个逐个添加图表的循环并将每个命名范围分配给每个图表应该相当简单。