這對我有效。一些注意事項:
- 這個代碼需要被放置在一個
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'數據總是在表中? –