Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用VBA修改动态名称_Excel_Vba - Fatal编程技术网

Excel 使用VBA修改动态名称

Excel 使用VBA修改动态名称,excel,vba,Excel,Vba,我有一个电子表格,可以链接到其他几个电子表格,将数据汇总到一张表格中;我的任务是修改工作表以绘制这些数据。在一个人的报告中,每个月有一行12个时段;如果某人在一个月内工作,则该月将显示在相应的位置。对于图,我已经计算出使用动态名称范围,以便图中的月数等于行中的月数;唯一的问题是,起始点根据一个人开始的月份而变化 我能够生成一个相当大的嵌套if语句,但这似乎不是解决问题的好方法。有没有办法让VBA脚本更改动态名称范围的值,或者直接修改图表的值?如果这不是一个可行的选项,除了动态命名范围之外,还有其

我有一个电子表格,可以链接到其他几个电子表格,将数据汇总到一张表格中;我的任务是修改工作表以绘制这些数据。在一个人的报告中,每个月有一行12个时段;如果某人在一个月内工作,则该月将显示在相应的位置。对于图,我已经计算出使用动态名称范围,以便图中的月数等于行中的月数;唯一的问题是,起始点根据一个人开始的月份而变化

我能够生成一个相当大的嵌套if语句,但这似乎不是解决问题的好方法。有没有办法让VBA脚本更改动态名称范围的值,或者直接修改图表的值?如果这不是一个可行的选项,除了动态命名范围之外,还有其他方法来解决这个问题吗

我无法更改此报告表的行为方式,因为这是一个与工作相关的电子表格,这是他们出于报告原因希望的方式;我只是想添加图形功能

示例:

在第一个示例中,当您从代理名称旁边的下拉框中选择“Second”时,您会看到一个问题示例。它在图表中包含了无意义的数据

在第二个示例中,我通过向图表中使用的动态命名范围添加if语句解决了这个问题;但正如你所看到的,包括2个月,它现在是巨大的,要包括所有12个月,这几乎是不可能的。如果我要添加一个三月份开始的第三个人,他们在第二个示例中也不会起作用

是否有办法使动态名称范围中的值可以通过VBA进行更改?我可以直接使用VBA修改图表的值吗?有没有一种不用VBA就可以绕过这个问题的方法

谢谢。

(我不能100%肯定我理解了这个问题,但这至少有助于进一步了解……)

尝试定义三个名称,如下所示:

start_month
data 
chart_data
start\u month
包含要绘制图表的列的编号时,
data
是所有12列数据,类似于
=OFFSET($C$1,0,0,COUNT($A:$A),12)
chart\u data
从数据中选择所需的列,例如
=INDEX(data,start\u month)


现在将图表的系列设置为
WorkbookName!图表数据
,使用工作簿中的任何名称。随着
开始\u月
值的变化,图表中显示的值也应随之变化。

您可以在VBA中添加或修改
名称
,如:

Dim nm As Name
Dim rng As Range

'Here, you could use a more complicated expression'
' to derive the proper address dynamically.'
Set rng = Sheets("Sheet1").Range("A2:A25")

'Now, add a Name to the workbook:'
Set nm = ActiveWorkbook.Names.Add("My_Name", rng)

使用一些字符串函数/变量,您可以派生/计算VBA中的范围地址。

对于我来说,如果您可以显示屏幕截图或电子表格的示例,这会有所帮助。最近的一个问题表明,使用以字母“c”开头的名称可能存在错误,无法将这些名称分配给VBA中的
系列。值