http://s3.dosya.tc/server11/yvuh7e/v7m_Quadrant.zip.html
附上你可以找到我需要帮助的表格。在" M象限"表格我有一个图表和一个数据透视表。还有一个组合框,可以在某些名称之间切换并更改数据透视表,从而更改图形。
我需要的是以某种方式自动化系列的颜色。当我换成一个新名字时,该系列保留了旧颜色,我希望通过以下标准获得颜色
X axis positive, Y axis positive = Green
X axis positive, Y axis negative = Orange
X axis negative, Y axis positive = Blue
X axis negative, Y axis negative = Red
或
此信息也记录在" M Grafik" sheet,它是数据透视表的资源,位于N Column。以下是一些翻译:
Yeşil = Green, Kırmızı = Red, Mavi = Blue, Turuncu = Orange
我想在我的按钮和组合框宏下面添加解决方案。因此,每当我更改图形时,colorin都应该重新运行。
此处还有截图:
最好的问候
答案 0 :(得分:2)
您可以使用这样的方法从Series
对象中获取X值和Y值,然后有条件地将R / G / B颜色应用于每个Point
' s Fill.ForeColor
和Fill.BackColor
:
Sub foo()
Dim cht As Chart
Dim srs As Series
Dim pt As Excel.Point
Dim x, y
Dim s As Long
Dim p As Long
Set cht = ActiveSheet.ChartObjects(1).Chart '## Modify if needed
'Loop all series in this chart
For s = 1 To cht.SeriesCollection.Count
Set srs = cht.SeriesCollection(s)
'Loop all point in this series
For p = 1 To srs.Points.Count
'Get the x and y value of this point
x = srs.XValues(p)
y = srs.Values(p)
Set pt = srs.Points(p)
pt.Select
'assign color based on x and y value
'## NOTE: YOU NEED TO SPECIFY THE R/G/B PARAMETERS FOR EACH.
Select Case True
Case x >= 0 And y >= 0 'Green
pt.Format.Fill.ForeColor.RGB = RGB(0, 255, 0)
pt.Format.Fill.BackColor.RGB = RGB(0, 255, 0)
Case x >= 0 And y < 0 'Orange
'pt.Format.Fill.ForeColor.RGB = RGB(,,)
'pt.Format.Fill.BackColor.RGB = RGB(,,)
Case x < 0 And y >= 0 'Blue
'pt.Format.Fill.ForeColor.RGB = RGB(0,0,255)
'pt.Format.Fill.BackColor.RGB = RGB(0,0,255)
Case x < 0 And y < 0 'Red
'pt.Format.Fill.ForeColor.RGB = RGB(255,0,0)
'pt.Format.Fill.BackColor.RGB = RGB(255,0,0)
End Select
Next
Next
End Sub
答案 1 :(得分:1)
在源数据中添加四列,分别为绿色,橙色,蓝色,红色。根据您在上面列出的条件,使用公式从原始数据列中提取数据。
将四个新列添加到散点图中作为新系列。将每个系列格式化为各自的标记颜色。删除原始数据系列。