[英]Chart range based on the value in a cell
我需要创建一个折线图,根据单元格中的值选择一系列数据。 例如,在单元格 C1 中我写了 A1:B4,这意味着图表是单元格 A1 到 B4 中数据的显示。 如果我只是将单元格 C1 中的值更改为 A1:B9,我希望图表显示此范围的数据 - 你明白了。 这应该不会太难,但我没有做对(出于某种原因,web 充满了不适用于我的相同示例)
我试过使用Named Range
function。 我仍然认为这是通往 go 的方法,但我需要一些帮助。
为此不需要VBA
。
让我们开始使用以下名为Sheet1
的工作表:
现在我们需要三个命名范围。 一个用于我们得到间接形式C1
的整个范围,一个用于整个范围的左列的类别,一个用于整个范围的右列的值。
因此,在名称管理器中,我们创建以下命名范围:
请注意,所有命名范围都在工作表Sheet1
的 scope 中,而不是在工作簿 scope 中。 因此,在创建命名范围时,请始终选择 scope Sheet1
而不是Workbook
名称myRange
指的是=INDIRECT(Sheet1!$C$1)
。 所以它从那个单元格值得到它的范围。
名称myCategories
指的是=INDEX(Sheet1,myRange,,1)
。 从myRange
的第1
列获取所有行(因为没有给出特殊行)。
名称myValues
指的是=INDEX(Sheet1,myRange,,2)
。 从myRange
的第2
列获取所有行(因为没有给出特殊行)。
现在我们可以插入一个图表(例如饼图)。
然后我们右键单击图表,然后选择Select Data
。
首先我们删除Legend Entries(系列)下方左侧的所有现有系列,如果有的话。 然后我们添加一个新系列。 在系列值中:我们输入公式=Sheet1!myValues
, OK
。
在水平(类别)轴标签下方的右侧,我们单击Edit
并输入公式=Sheet1!myCategories
, OK
。
然后OK
整个选择数据对话框。
现在,如果我们将C1
的单元格值更改为INDIRECT
可以解释为单元格范围的值,那么图表也会发生变化。
还要给出VBA
解决方案:
让我们有与上面相同的工作表。 A1:B8
中的数据和C1
中的范围地址。
现在创建想要的图表。 它必须是该表中唯一的图表 object。
现在将以下代码放入Sheet1
的工作表模块中(右键单击工作表选项卡并单击View Code
):
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
如果C1
(第 1 行,第 3 列)的值发生变化,此代码会导致图表的源数据发生变化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.