如何用vba生成多系列气泡图?

如何用vba创建气泡图?一文中我们介绍了用vba创建气泡图的要点,并且给出了用vba创建单系列气泡图的代码。

今天,跟大家一起分享如何用vba快速地创建一个多系列的气泡图,以达到不同的系列用不同的颜色显示气泡的目的。

如下图所示:

可以使用如下的代码生成上图的多系列气泡图:

Sub QQ1722187970()
    Dim oWK As Worksheet
    Set oWK = Excel.Worksheets("Sheet1")
    With oWK
        iRow = .Range("a65536").End(xlUp).Row
    End With
    With oWK.Sort
        '删除原来的排序字段
        .SortFields.Clear
        '添加新的排序字段
        .SortFields.Add Key:=oWK.Range("a1"), SortOn:=xlSortOnValues, Order:=xlDescending
        '设置排序的单元格区域
        .SetRange oWK.Range("a1:e" & iRow)
        '设置排序的方向
        .Orientation = xlSortColumns
        '设置是否包含列标题
        .Header = xlYes
        '开始排序
        .Apply
    End With
    '定义字典对象变量
    Dim oDic As Object
    '创建字典对象
    Set oDic = CreateObject("Scripting.Dictionary")
    '先存储相同的系列对应的单元格区域
    For i = 2 To iRow
        With oDic
            sKey = oWK.Cells(i, 1).Value
            If .exists(sKey) Then
                Set .Item(sKey) = Excel.Application.Union(.Item(sKey), oWK.Cells(i, 1))
            Else
                .Add sKey, oWK.Cells(i, 1)
            End If
        End With
    Next i
    arrKeys = oDic.keys
     Dim oChart As Chart
    Dim oSeries As Series
    Dim oSC As SeriesCollection
    Dim oFSC As FullSeriesCollection
    '先创建一个空白的图形壳
    Set oChartObject = oWK.ChartObjects.Add(100, 50, 500, 300)
    Set oChart = oChartObject.Chart
    '对空白的图形进行设置
    With oChart
        .ChartWizard Source:=oWK.Range("c2:e" & iRow), gallery:=xlBubble3DEffect, PlotBy:=xlColumns, HasLegend:=False
        iCount = .FullSeriesCollection.Count
            For i = .FullSeriesCollection.Count To 1 Step -1
                .SeriesCollection(i).Delete
            Next i
        '遍历创建所有系列
        For i = 0 To UBound(arrKeys)
            Dim oRng As Range
            Set oRng = oDic.Item(arrKeys(i))
            Debug.Print oRng.Address
            Set oSeries = .SeriesCollection.NewSeries
            With oSeries
                .Name = arrKeys(i)
                .XValues = oRng.Offset(0, 2)
                .Values = oRng.Offset(0, 3)
                .BubbleSizes = oRng.Offset(0, 4)
            End With
        Next i
    End With
End Sub

以上是用vba创建多系列气泡图的通用代码。

       

发表评论