Excel 基于单元格中的值的图表范围
我需要创建一个折线图,根据单元格中的值选择一系列数据。例如,在单元格C1中,我写入A1:B4,这意味着图表是单元格A1到B4中数据的显示。如果我简单地将单元格C1中的值更改为A1:B9,我希望图表显示这个范围的数据-你得到了点。这应该不会太难,但我没有正确理解(由于某些原因,网络上充满了不适用于我的应用程序的相同示例)Excel 基于单元格中的值的图表范围,excel,vba,Excel,Vba,我需要创建一个折线图,根据单元格中的值选择一系列数据。例如,在单元格C1中,我写入A1:B4,这意味着图表是单元格A1到B4中数据的显示。如果我简单地将单元格C1中的值更改为A1:B9,我希望图表显示这个范围的数据-你得到了点。这应该不会太难,但我没有正确理解(由于某些原因,网络上充满了不适用于我的应用程序的相同示例) 我尝试过使用命名范围函数。我仍然认为这是一条路,但我需要一些帮助。这不需要VBA 让我们开始将以下工作表命名为Sheet1: 现在我们需要三个命名范围。一个用于整个范围,我们得
我尝试过使用
命名范围
函数。我仍然认为这是一条路,但我需要一些帮助。这不需要VBA
让我们开始将以下工作表命名为Sheet1
:
现在我们需要三个命名范围。一个用于整个范围,我们得到间接形式C1
,一个用于类别,它是整个范围的左列,另一个用于值,它是整个范围的右列
因此,在名称管理器中,我们创建以下命名范围:
注意:所有命名范围都在工作表Sheet1
的范围内,而不在工作簿范围内。因此,在创建命名范围时,始终选择范围Sheet1
,而不是Workbook
名称myRange
指的是=间接(Sheet1!$C$1)
。所以它从那个单元格值得到它的范围
名称myCategories
指=索引(Sheet1!myRange,,1)
。从myRange
的列1
中获取所有行(因为没有指定特殊行)
名称myValues
指=索引(Sheet1!myRange,,2)
。从myRange
的列2
中获取所有行(因为没有给出特殊行)
现在我们可以插入一个图表(例如饼图)
然后右键单击图表,然后选择selectdata
首先,我们删除左侧图例条目(系列)下方的所有当前系列(如有)。然后我们添加一个新系列。在系列值中:我们将公式=Sheet1!我的值
,正常
在水平(类别)轴标签下方的右侧,我们单击编辑并输入公式=Sheet1!我的类别
,正常
然后对整个选择数据对话框执行OK
现在,如果我们将C1
的单元格值更改为INDIRECT
可以解释为单元格范围的值,那么图表也会更改
要同时提供
VBA
解决方案,请执行以下操作:
让我们拿一张和上面一样的纸。A1:B8中的数据和C1中的范围地址
现在创建通缉图。它必须是该工作表中唯一的图表对象
现在将以下代码放入Sheet1
的工作表模块中(右键单击工作表选项卡,然后单击查看代码
):
如果C1
(第1行,第3列)的值发生变化,则此代码会导致图表的源数据发生变化。不需要VBA
让我们开始将以下工作表命名为Sheet1
:
现在我们需要三个命名范围。一个用于整个范围,我们得到间接形式C1
,一个用于类别,它是整个范围的左列,另一个用于值,它是整个范围的右列
因此,在名称管理器中,我们创建以下命名范围:
注意:所有命名范围都在工作表Sheet1
的范围内,而不在工作簿范围内。因此,在创建命名范围时,始终选择范围Sheet1
,而不是Workbook
名称myRange
指的是=间接(Sheet1!$C$1)
。所以它从那个单元格值得到它的范围
名称myCategories
指=索引(Sheet1!myRange,,1)
。从myRange
的列1
中获取所有行(因为没有指定特殊行)
名称myValues
指=索引(Sheet1!myRange,,2)
。从myRange
的列2
中获取所有行(因为没有给出特殊行)
现在我们可以插入一个图表(例如饼图)
然后右键单击图表,然后选择selectdata
首先,我们删除左侧图例条目(系列)下方的所有当前系列(如有)。然后我们添加一个新系列。在系列值中:我们将公式=Sheet1!我的值
,正常
在水平(类别)轴标签下方的右侧,我们单击编辑并输入公式=Sheet1!我的类别
,正常
然后对整个选择数据对话框执行OK
现在,如果我们将C1
的单元格值更改为INDIRECT
可以解释为单元格范围的值,那么图表也会更改
要同时提供VBA
解决方案,请执行以下操作:
让我们拿一张和上面一样的纸。A1:B8中的数据和C1中的范围地址
现在创建通缉图。它必须是该工作表中唯一的图表对象
现在将以下代码放入Sheet1
的工作表模块中(右键单击工作表选项卡,然后单击查看代码
):
如果C1
(第1行,第3列)的值发生变化,此代码将导致图表的源数据发生变化。您肯定尝试过其中一个示例,但出现了问题。如果你展示了你所做的尝试以及问题的症结所在,其他人会更容易帮助你。我做过,比如这一次:,但没有用。我猜这应该是一个快速修复的人知道。它是什么意思“希望图表显示此范围的数据”?图表总是需要两个范围,一个是类别(或x值),另一个是类别值(或y值)。当然,你一定试过其中一个
Private Sub Worksheet_Change(ByVal Target As Range)
Dim oChartObject As ChartObject
Dim oChart As Chart
If Target.Row = 1 And Target.Column = 3 Then
On Error Resume Next
Set oChartObject = Me.ChartObjects(1)
Set oChart = oChartObject.Chart
oChart.SetSourceData Source:=Me.Range(Target.Value)
On Error GoTo 0
End If
End Sub