excel 图表 怎么设置动态数据源?

大概是这样的,我有一个每日更新一列的数据表,其中有很多个图表,每个图表的数据源都是其中几行(从第二列开始到最后一列).
于是每天更新一列之后我都要手动将所有图表的数据源往右拉一行,非常繁琐.因此我想把这个工作自动化,
我尝试了用一个名称指代我想要的数据源区域,但是却不知道怎么把这个名称放进图表的数据来源那里,总是提示错误……而直接在数据来源里面写函数的话,excel就会自动把函数转化成区域,这个函数就此消失了……

想请教一下有没有excel大牛能教明白我?如果能有范例就最好啦!
呃,如果不能每天自动往右拉一行的话,每天移动一行也是可以的!

示例:

右键单击图表---选择数据源

 

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-02-22
怎么设置动态的数据源?在窗口的Open事件中怎么动态设置窗体的数据源?示例: Private Sub Form_Open(Cancel As Integer) Me.RecordSource = "b1" End Sub or Private Sub Form_Open(Cancel As Integer) Me.RecordSource = "select * from b1" End Sub Me.RecordSource = "select * from 表名" 子窗体的数据源: Me.子窗体控件名.Form.RecordSource = "select * from 表名" Me.RecordSource = "select * from 表名" --或 Me.RecordSource = "select * from 查询名" --或 Me.RecordSource = "表名" --或 Me.RecordSource = "查询名" 是想要窗体数据能在不关的情况下刷新吗?在窗体的数据源设置"select * from 表名 where 字段名=forms!窗体名.控件名 "同时在控件的更新事件下写VBA代码 Me.Requery Me.Refresh 如命令按扭,更好的写如下 rivate Sub COMBO1_AfterUpdate() Me.Requery Me.Refresh End Sub 设置好COMBO的数据源不用写代码 在窗体的打开事件中动态设置数据源,如: Me.RecordSource="select * from 表名 字段名 = " & [forms]![表1]![自动编号]追问

我不太懂你在说什么...

你懂了吗

第2个回答  2013-02-22
我也有同样的需求
但单纯用函数公式无法实现
因为图表数据源不支持INDIRECT函数
因此我自己写了一段VBA代码
当工作表内容变更时
自动扩展图表的数据源
不过VBA需要根据实际的工作表进行编制
请提供具体的数据源引用范围追问

我没用过VBA,不过可以举一反三嘛.

例如我想要4-17行,B列至最后一列作为数据源,怎么办呢?

追答

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ED as range
If Target.Address = "$A$1" Then ' 请设置一个触发单元格,当这个单元格变化时,就自动扩展数据源
set ED = Activesheet.Range("B4").End(xlToRight).Offset(13,0)

Charts(1).SetSourceData Source:=Activesheet.Range("$B$4:" & ED.Address), PlotBy _ :=xlRows
End If

End Sub

本回答被提问者和网友采纳
第3个回答  2013-02-22
不是很明白你表达的意思
如果你在制表的时候 直接扩展多列数据
比如你现在有10列数据 明天就是11列
那么你在制作图表的时候 直接选定数据源就是15列 或者 30列
当然那些列现在是空的 但不影响你的图表
或者你上传一个样表 有助于分析追问

确实可行~~不过我还是想知道有没有自动扩展的方法~谢谢啦

追答

自动扩展需要VBA编程 偶不擅长 请教下其他达人

第4个回答  2013-02-22
最简单的办法是将这个数据源作为一个“表”来处理,比如名称为“表1”,那么引用的数据源就是“表1”,以后不管是插入一行还是一列 都会自动扩展。追问

也是个好方法,感谢!不过这样就会产生大量的工作表啦........

相似回答