这对我有用。一些注意事项:
- 这段代码需要放在一个
Worksheet
模块中
- 要更新图表,只需单击
name
列中的名称,例如“xyz”、“abc”等。
- 如果没有图表,它会先创建一个,然后再更新同一个图表
这是代码:
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 中按
ALT
+ F11
。这将打开 VBA 编辑器
- 在左侧项目窗口中单击保存数据的工作表,例如 Sheet1
- 在左侧下拉列表中选择
Worksheet
- 在右侧下拉列表中选择
SelectionChange
- 剪切并粘贴代码
注意 - 我假设您的数据从 A 列开始。如果不是,您需要自己修改代码中的列引用