繁体   English   中英

基于单元格中的值的图表范围

[英]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!myValuesOK

在水平(类别)轴标签下方的右侧,我们单击Edit并输入公式=Sheet1!myCategoriesOK

然后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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM