使用VBA基于单元格值创建包含数据标签的图表

时间:2018-05-09 18:30:39

标签: excel vba excel-vba charts

我对VBA完全不熟悉,并希望得到一些指导。我想使用一个宏,按下按钮,创建一个图表

  1. 基于用户选择的范围(如下图所示)
  2. 在新工作表上
  3. 将x轴数据标签设置为标题的顶行(蓝色范围)
  4. 根据数据左侧的三个组标签设置系列标签。 (橙色范围)
  5. enter image description here

    到目前为止,我所做的全部是第一个,基于this answer,导致以下代码:

    Sub CommandButton1_Click()
        createChart
    End Sub
    
    Sub createChart()
        Dim myRange As Range
        Set myRange = Selection
    
        ActiveSheet.Shapes.AddChart.Select
        ActiveChart.ChartType = xlColumnClustered
        ActiveChart.SetSourceData Source:=myRange
    
        Cells(1, 1).Select
    End Sub
    

    有人可以告诉我如何更改此代码以在新工作表上创建图表,并在给定范围的单元格中使用数据和系列标签吗?如果需要,我可以将这些问题分成不同的问题。谢谢。

1 个答案:

答案 0 :(得分:1)

感谢Sam,我能够找到我需要的代码。

Sub createChart()

    Dim myRange As Range
    Set myRange = Selection

    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlColumnClustered
    ActiveChart.SetSourceData Source:=myRange

    Dim SheetName As String
    SheetName = Cells(myRange.Row, 2).Value
    ActiveChart.Location Where:=xlLocationAsNewSheet, Name:=SheetName

    ActiveChart.FullSeriesCollection(1).XValues = "=Scores!$E$1:$I$1"

    Dim i As Integer

    For i = 1 To ActiveChart.FullSeriesCollection.Count
        ActiveChart.FullSeriesCollection(i).Name = "=Scores!$C" & myRange.Row + i - 1
    Next

    ActiveChart.SetElement (msoElementChartTitleAboveChart)
    ActiveChart.ChartTitle.Select
    ActiveChart.ChartTitle.Text = "=Scores!$A" & myRange.Row

End Sub

这让我可以选择范围,单击按钮,图表将在新工作表中创建,其中包含我需要的所有数据标签。这应该真的帮助我下次需要创建基于图表的宏。