在excel中绘制动态图形

时间:2012-12-19 14:13:55

标签: 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

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

1 个答案:

答案 0 :(得分:1)

这对我有用。一些说明:

  1. 此代码需要放在Worksheet模块
  2. 要更新图表,只需点击name列中的名称,例如'xyz','abc'等。
  3. 如果没有图表,则首先创建一个图表,然后随后更新相同的图表
  4. 以下是代码:

    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中按ALT + F11。这将打开VBA编辑器
    2. 在左侧项目窗口中,点击保存数据的工作表,例如Sheet 1中
    3. 在左侧下拉列表中选择Worksheet
    4. 在右侧下拉列表中选择SelectionChange
    5. 剪切并粘贴代码
    6. 注意 - 我假设您的数据从A列开始。如果不是,您需要自己修改代码中的列引用