2012-12-19 35 views
0

动态图形我有以下数据绘制在Excel

Name Date  Number_of_apples 
------------------------------- 
abc 1-1-2012 5 
abc 2-1-2012 3 
xyz 1-1-2012 4 
xyz 2-1-2012 2 
xyz 3-1-2012 6 

我要绘制在Excel中的2D线图表示上述数据。

图中X轴应包含Date,Y轴应包含Number of apples

例情节进行名称abc

enter image description here

根据名称的选择,该图应更新以表示该名称的数据。

+0

你是说如果我选择'XYZ',那么显示所有的XYZ数据?名称字段是否总是分组'XYZ'数据总是在表中? –

回答

1

这对我有效。一些注意事项:

  1. 这个代码需要被放置在一个Worksheet模块
  2. 要更新图表只需在您name列点击名字,例如: “XYZ”,“ABC”等
  3. 如果没有图出现时,它会创建一个先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

  1. 在Excel按​​F11。这将打开VBA编辑器
  2. 在左侧项目窗口中,单击保存数据的工作表,例如,工作表Sheet1
  3. 在左边的下拉列表中选择Worksheet
  4. 在右边的下拉列表中选择SelectionChange
  5. 剪切和粘贴代码

注意 - 我假设你的数据开始A列中如果没有你你需要自己修改代码中的列引用

+0

如果你能向我解释如何完成这个工作的整个过程,那将是非常好的。对不起,要求更多。我对excel非常陌生。 – CCoder

+0

我已经更新了答案。请参阅'编辑:如何在Excel中设置' –

+0

太棒了!非常感谢:)工作就像一个魅力! – CCoder