在如何用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创建多系列气泡图的通用代码。


发表评论