这对我有效。一些注意事项:
- 这个代码需要被放置在一个
Worksheet
模块
- 要更新图表只需在您
name
列点击名字,例如: “XYZ”,“ABC”等
- 如果没有图出现时,它会创建一个先subseqently更新,同一个图表
下面的代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
UpdateChart Target
End If
End Sub
Sub UpdateChart(name As Range)
Dim startRow As Integer, lastRow As Integer
Dim namerng As Range, data As Range, applechart As ChartObject
Set namerng = Range("A1:A" & Range("A1").End(xlDown).Row)
startRow = WorksheetFunction.Match(name.Value, namerng, 0)
lastRow = startRow + WorksheetFunction.CountIf(namerng, name.Value) - 1
On Error Resume Next
Set applechart = ActiveSheet.ChartObjects("AppleChart")
Set data = Range("B" & startRow & ":C" & lastRow)
If Not applechart Is Nothing Then
applechart.Activate
ActiveChart.SetSourceData Source:=data
Else
ActiveSheet.Shapes.AddChart.Select
ActiveSheet.ChartObjects(1).name = "AppleChart"
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=data
End If
End Sub
编辑:如何建立在Excel
- 在Excel按
F11
。这将打开VBA编辑器
- 在左侧项目窗口中,单击保存数据的工作表,例如,工作表Sheet1
- 在左边的下拉列表中选择
Worksheet
- 在右边的下拉列表中选择
SelectionChange
- 剪切和粘贴代码
注意 - 我假设你的数据开始A列中如果没有你你需要自己修改代码中的列引用
你是说如果我选择'XYZ',那么显示所有的XYZ数据?名称字段是否总是分组'XYZ'数据总是在表中? –