如何在条形图中仅显示条件格式的色标?

问题描述 投票:0回答:2

我正在尝试创建管道调查数据的热图作为条形图,仅显示瞬态颜色。

我有一个位置和电流密度值列表,我已将其有条件地格式化为色标。

如何将其复制为图表(忽略实际数据值,而仅将颜色显示为块)?
enter image description here

我尝试了很多Excel函数。我只能将热图显示为电子表格而不是条形图。数据可以覆盖 1000 行,因此我希望将其显示为图表,作为显示密度的一种视觉表示形式。

excel vba charts heatmap
2个回答
0
投票

注意:当数据源发生变化时,图表中条形的颜色不会自动更新。

微软文档:

Series.XValues 属性 (Excel)

范围.插入方法(Excel)

Range.CurrentRegion 属性 (Excel)

Option Explicit

Sub HeadMapColumnChart()
    Dim srcRng As Range, i As Long, oSerCol As Series
    Set srcRng = Range("C1").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

enter image description here


0
投票

您可以使用属性

.DisplayFormat.Interior.Color
来读取条件格式给出的单元格的真实颜色。使用它,我将制作一个所有列的值为 1 的条形图,然后使用 VBA 代码来格式化图表的每个条形。

Sub ColorChart()
Dim loData As ListObject
Dim myRng As Range
Dim i As Integer

Set loData = ThisWorkbook.Sheets(1).ListObjects("tblChartData")

For i = 1 To loData.DataBodyRange.Rows.Count
    Set myRng = loData.ListColumns("CD").DataBodyRange(i)
    
    ThisWorkbook.Sheets(1).ChartObjects("Chart 1").Activate
    ActiveChart.FullSeriesCollection(1).Points(i).Select
    Selection.Format.Fill.ForeColor.RGB = myRng.DisplayFormat.Interior.Color

Next i

End Sub

我将其基于表格,因为它让我更有信心图表与我们读取以获得颜色的值具有相同的范围。

看起来像这样: 条形图格式与表格颜色相同

© www.soinside.com 2019 - 2024. All rights reserved.