示例数据如下图所示,第二列设置了色阶条件格式。
现在需要创建使用色阶梯度颜色的柱形图,如下图所示。
示例代码如下。
Sub HeadMapColumnChart()
Dim srcRng As Range, i As Long, oSerCol As Series
Set srcRng = Range("A1").CurrentRegion
Columns("C").Insert
With srcRng.Columns("C")
.Value = "1"
.Cells(1).Value = "CD"
End With
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
With ActiveChart
.SetSourceData Source:=srcRng.Columns("C")
.Axes(xlValue).MaximumScale = 1
.ChartGroups(1).GapWidth = 0
.SetElement (msoElementPrimaryValueAxisNone)
.HasAxis(xlCategory) = True
Set oSerCol = .FullSeriesCollection(1)
End With
With srcRng.Columns(1)
oSerCol.XValues = "=" & ActiveSheet.Name & "!" & .Resize(.Rows.Count - 1).Offset(1).Address
End With
For i = 2 To srcRng.Rows.Count
oSerCol.Points(i - 1).Format.Fill.ForeColor.RGB = Cells(i, "B").DisplayFormat.Interior.Color
Next
End Sub
【代码解析】
第3行代码获取数据区域。
第4行代码在第3列插入空白列作为辅助列。
第6行代码将辅助列填充为1。
第7行代码将2列标题复制到复制列。
第9行代码创建图表。
第10行代码设置数据区域。
第11行代码设置数据轴的最大刻度。
第13行代码设置柱的间隔为0。
第14行代码隐藏数据轴。
第15行代码设置为分类轴。
第16行代码获取数据系列对象。
第19行代码设置图表系列公式。
第21~23行代码循环设置柱图数据点的填充颜色。