您的位置: 首页 > EXCEL技巧 > ExcelVBA >

VBA设置图表动态数据源一例

时间:2013-12-10 整理:docExcel.net

Excel图表的数据源通常为一个连续区域,但有时会遇到图表数据源区域不连续,且需要动态改变的情况。例如下面的某公司人员基本情况汇总表,B列为部门名称,C至S列分别为“性别”、“年龄”、“学历”、“职称”等不同类别数据的汇总,如果将这些数据同时显示在一个图表中,显然不便观察和比较数据,这时可以用VBA来动态改变数据源,单独对各个类别进行显示。

图表动态数据源示例数据

具体的方法是:先在表格中创建一个下拉列表,然后通过下拉列表选择不同的系列,通过VBA代码改变图表数据区域,让图表中的数据随之改变。下面以在Excel 2003中绘制柱形图为例说明如下:

1.设置下拉列表。设置下拉列表的方法有很多,这里用数据有效性来设置。选择某个单元格,如T14,单击菜单“数据→有效性→设置→序列”,在“来源”下输入“性别,年龄,学历,职称”(不含引号)后确定,这样就在T14单元格中通过数据有效性设置了一个下拉列表。

通过数据有效性设置下拉列表

2.插入图表。选择B3:D11区域,即“部门”和第一个类别所在区域“性别”,单击菜单“插入→图表→柱形图→簇状柱形图”,单击“完成”插入一个包含“男”、“女”两个系列的柱形图。

先插入一个柱形图

3.输入VBA代码。按Alt+F11,打开VBA编辑器,在代码窗口中粘贴下列代码:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$T$14" Then
   Dim RngStr As String
   Select Case Target.Value
Case "性别"
RngStr = "b3:b11,c3:d11"
   Case "年龄"
RngStr = "b3:b11,e3:i11"
   Case "学历"
RngStr = "b3:b11,j3:n11"
   Case "职称"
RngStr = "b3:b11,o3:s11"
   End Select
   ChartObjects("图表 1").Chart.SetSourceData Source:=Range(RngStr)
End If
End Sub

说明:改变T14单元格中的内容时,图表的数据区域随之改变。本例中的图表名称为“图表 1”,需根据实际进行更改。查看图表名称的方法是:

Excel 2003:按住Ctrl键单击图表,在名称框中即可看到所选图表的名称。

Excel 2007/2010:选择图表,在“图表工具-布局”选项卡的“属性”组中即可看到图表名称。

关闭VBA编辑器,返回Excel工作表界面,选择T14单元格中的不同系列即可在图表显示相应类别的数据。

示例文件下载:VBA设置图表动态数据源.xls   

VBA设置图表动态数据源一例 问题:VBA设置图表动态数据源一例
回答:Excel图表据源通常为一个连续区域,但有时会遇到图表据源区域不连续,且需要动态改变的情况。例如下面的某公司人员基本情况汇总表,B列为部门名称,C至S列分别为“性别”、“年龄”、“学历”、“职称”等不同类...
避免Excel图表中的数据系列出现“空缺”二 问题:避免Excel图表中的数据系列出现“空缺”二
回答:有时Excel图表据源中会包含空数据,当图表类型为“折线图”或“带数据标记的折线图”时,图表数据系列就会出现“空缺”而不连续。例如下面一组销售数据中的“三月”的数据缺失,折线图中的数据系列就显得不完整。 ...
避免Excel图表中的数据系列出现“空缺”一 问题:避免Excel图表中的数据系列出现“空缺”一
回答:...图表中的数据系列会出现一些“空缺”。例如当Excel图表据源中包含空数据图表类型为“折线图”或“带数据标记的折线图”时。又如当据源中包含不连续日期时,默认Excel会自动将坐标轴的日期设置为连续日期。本文介...
Excel2013信息图表制作实例半圆气泡图 问题:Excel2013信息图表制作实例半圆气泡图
回答:...写个相对简单的教程吧,半圆气泡图的制作。 ①准备好据源,设定2个辅助列,一列是通过倍数数据开平方得到,也就是半圆形的半径/直径比例。第二列辅助数据是通过前面计算得到的直径(或半径)数据算出圆心所在位置...
Excel2013图表制作实例仿音控器柱状图 问题:Excel2013图表制作实例仿音控器柱状图
回答:...讲图表的制作,仿音控器柱状图。 ①打开Excel2013,输入据源,建立一个辅助列,以此显示滑动条中滑动钮以上的部分(原有的那些数据用来显示按钮以下的部分)。然后建立百分比堆积柱状图。 ②新增一个数据列,选择完...
Excel2010图表制作实例:柱形目标进度图 问题:Excel2010图表制作实例:柱形目标进度图
回答:...下具体的制作方法。 ①启动Excel2010,创建图表当然得有据源,我简单建立一个各地区销售情况的表格,选中表格,单击菜单栏--插入--柱形图--簇状柱形图。 ②图表插入之后,看到分蓝色和红色的柱形条,右击红色的柱形条...
相关知识:

下面内容对您也许有用

      话题:excel 图表 怎么设置动态数据源?知道
      问:大概是这样的,我有一个每日更新一列的数据表,其中有很多个图表,每个图表数据源
      答:我也有同样的需求 但单纯用函数公式无法实现 因为图表数据源不支持INDIRECT函数 因此我自己写了一段VBA代码 当工作表内容变更时 自动扩展图表数据源 不过VBA
      话题:excel VBA 图表数据源的引用问题
      问:ActiveChart.SeriesCollection(k).XValues="="&ThisWorkbook.Name&!test"&k 出现
      答:在语句里面没有给K赋值吧
      话题:vba窗体数据源设置问题?知道
      问:请教:用vba代码链接数据源,是不是在窗体上的每个控件写事件代码时都需要打开
      答:窗体有一个记录源属性可以绑定一个表或查询,窗体上的文本框等控件有控件来源属性,可以绑定表或查询中的字段
      话题:VBA图表插入的问题
      问:想在工作表“伸长量”中建立一个图表,其源数据是另一个工作表“计算结果详表”
      答:VBA也尝试过动态添加图表,结果俺还是一次又一次失败 所以,我的经验方法是,先添加一个图表,然后使用VBA更新图表数据源区域 不知道这个思路对楼主是否有帮助 如何用VBA隐藏插入的图表 如何在VBA中导入excel中的图表
      话题:excel VBA生成图表怎么才能始终以列为系列?知道
      问:不要给我用这个ActiveChart.SeriesCollection(i).Values 函数,因为数据多的时候
      答:兄弟,可以在VBA中用Chart.SetSourceData 方法 为指定图表设置源数据区域。语法 表达式.SetSourceData(Source,PlotBy)表达式 一个代表 Chart 对象的变量。参数 Excel VBA生成图表问题 excel中用VBA如何实现动态创建
      话题:通过VBA设置图表样式
      答:先用录制宏录制一段,然后分析里面的代码含义,最后把自己需要的变量值代入就可以了。比如下面是我录制的一段改变图表“绘图区”格式的代码。Sub Macro1()
      话题:如何做运用VBA做动态图表
      答:1.原数据区 2.根据条件筛选出动态数据区 3.用动态数据区为源插入图表VBA制做EXCEL登录系统 excel中用VBA如何实现动态创建
      话题:如何在VBA中将pivotTable控件的数据源设置到excel工作表上_
      答:ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase,SourceData:=_"Sheet2!R1C1:R19C4",Version:=xlPivotTableVersion14).CreatePivotTable_ excel vba 点控件执行复制数据到 EXCEL如何在VBA窗体的图片控件中
      话题:在EXCEL图表中,我人为改动了一个百分比。以后改动数据源时,
      问:我又重新关联过数据源,但表中的改变的数据行仍然不随数据源而改变。这个问题
      答:EXCEL 使用技巧大全(绝对值得收藏).2010-10-12 10:59:21|分类:电脑知识|标签:|字号大中小 订阅.01、如何在已有的单元格中批量加入一段固定字符?例如:在
      话题:VBA创建图表后怎么不要那些数据?知道
      问:本身的Chart_走势是一个模板 Sheets("Sheet1").ChartObjects("Chart_走势").
      答:没太明白你的意思。你是想说你想把sheet2的值给删掉,但是sheet1这个表的值不变? 如何通过VBA设置图表数据 excel vba 如何设置图表 数据
最新评论