Excel中的條件格式可以有效的凸顯數據特征,如下圖中B列所示。
現在需要使用圖表展現熱力條形圖,如下圖所示。由于顏色有多個過渡色,因此手工逐個設置數據條的顏色,基本上是不可能完成的任務,使用VBA代碼可以快速創建這種圖表。
由于數據條是等高的,因此需要增加輔助列,如下圖中C列所示。
示例代碼如下。
Sub HeadMapColumnChart()Dim srcRng As Range, i As Long, oSerCol As SeriesSet srcRng = Range("C1").CurrentRegionColumns("C").InsertWith srcRng.Columns("C").Value = "1".Cells(1).Value = "CD"End WithActiveSheet.Shapes.AddChart2(201, xlColumnClustered).SelectWith ActiveChart.SetSourceData Source:=srcRng.Columns("C").Axes(xlValue).MaximumScale = 1.ChartGroups(1).GapWidth = 0.SetElement (msoElementPrimaryValueAxisNone).HasAxis(xlCategory) = TrueSet oSerCol = .FullSeriesCollection(1)End WithWith srcRng.Columns(1)oSerCol.XValues = "=" & ActiveSheet.Name & "!" & .Resize(.Rows.Count - 1).Offset(1).AddressEnd WithFor i = 2 To srcRng.Rows.CountoSerCol.Points(i - 1).Format.Fill.ForeColor.RGB = Cells(i, "B").DisplayFormat.Interior.ColorNext
End Sub
【代碼解析】
第3行代碼獲取數據表單元格區域。
第4行代碼在C列插入空白列,如果工作表中C列為空白列,那么可以省略此行代碼。
第6行代碼在C列插入輔助列,賦值為1,這樣可以實現等高數據條。注意此處只針對數據表所在行進行賦值,并非將整個C列填充數值。
第7行代碼C1單元格的值等于B1,用做圖表標題。
第9行代碼插入柱圖。
第11行代碼設置數據區域為C列。
第12行代碼設置縱軸最大值為1。
第13行代碼設置數據條之間寬度為0。
第14行代碼隱藏縱軸。
第15行代碼設置橫軸為分類軸。
第16行代碼獲取圖表系列。
第19行代碼設置橫軸分類標簽。
第21~23行代碼循環遍歷數據區域,并設置數據條的填充顏色。
第22行代碼設置數據條的填充色,由于B列中使用條件格式設置的顏色,因此需要使用DisplayFormat.Interior.Color
屬性讀取其顏色值。