Excel 根据单元格的颜色设置折线图的颜色
Excel set color of line graph based on color of cells
所以我有一组数据,见下图。
我希望折线图的颜色与相应行的背景颜色相同。在此示例中,前 10 个应为绿色,后 10 个应为红色。这是我会不断做的事情,有时会有大数据集,所以单独选择每条线的颜色不是一个可行的选择。
谁能帮帮我?
-蒂姆
像这样的事情可能会让你完成大部分工作。
- 遍历
Chart
的 SeriesCollection
并获取每个 Series
的 Formula
。
- 使用
Split
获取对源数据的引用(公式的第三部分)。
- 将每个
Series
的 ForeColor.RGB
设置为与其关联的数据范围的 Interior.Color
相等。
Sub ColorMyChart()
Dim myChart As ChartObject
Set myChart = Sheet1.ChartObjects("Chart 1")
With myChart.Chart
Dim i As Integer
For i = 1 To .SeriesCollection.Count
Dim dataAddress As String
' takes a formula like =SERIES(Sheet1!$A,Sheet1!$B:$K,Sheet1!$B:$K,1)
' and returns Sheet1!$B:$K
dataAddress = Split(.SeriesCollection(i).Formula, ",")(2)
Dim dataColor As Long
' assumes the data range all has the same color
dataColor = Sheet1.Range(dataAddress).Interior.Color
.SeriesCollection(i).Format.Line.ForeColor.RGB = dataColor
Next i
End With
End Sub
所以我有一组数据,见下图。
我希望折线图的颜色与相应行的背景颜色相同。在此示例中,前 10 个应为绿色,后 10 个应为红色。这是我会不断做的事情,有时会有大数据集,所以单独选择每条线的颜色不是一个可行的选择。
谁能帮帮我? -蒂姆
像这样的事情可能会让你完成大部分工作。
- 遍历
Chart
的SeriesCollection
并获取每个Series
的Formula
。 - 使用
Split
获取对源数据的引用(公式的第三部分)。 - 将每个
Series
的ForeColor.RGB
设置为与其关联的数据范围的Interior.Color
相等。
Sub ColorMyChart()
Dim myChart As ChartObject
Set myChart = Sheet1.ChartObjects("Chart 1")
With myChart.Chart
Dim i As Integer
For i = 1 To .SeriesCollection.Count
Dim dataAddress As String
' takes a formula like =SERIES(Sheet1!$A,Sheet1!$B:$K,Sheet1!$B:$K,1)
' and returns Sheet1!$B:$K
dataAddress = Split(.SeriesCollection(i).Formula, ",")(2)
Dim dataColor As Long
' assumes the data range all has the same color
dataColor = Sheet1.Range(dataAddress).Interior.Color
.SeriesCollection(i).Format.Line.ForeColor.RGB = dataColor
Next i
End With
End Sub