0

我有以下数据

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 中绘制一个代表上述数据的二维折线图。

图表应包含Date在 X 轴和Number of applesY 轴中。

name 的示例图abc

在此处输入图像描述

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

4

1 回答 1

1

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

  1. 这段代码需要放在一个Worksheet模块中
  2. 要更新图表,只需单击name列中的名称,例如“xyz”、“abc”等。
  3. 如果没有图表,它会先创建一个,然后再更新同一个图表

这是代码:

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. 在左侧项目窗口中单击保存数据的工作表,例如 Sheet1
  3. 在左侧下拉列表中选择Worksheet
  4. 在右侧下拉列表中选择SelectionChange
  5. 剪切并粘贴代码

注意 - 我假设您的数据从 A 列开始。如果不是,您需要自己修改代码中的列引用

于 2012-12-19T17:25:17.793 回答