2013-07-09 69 views
0

我正在尋找一種方法來基於水平類別軸的值來設置餅圖中切片的顏色格式。基於水平類別軸的Excel餅圖格式化切片

例如,我有以下數據標籤的餅圖(其是從類別軸標籤來源):

  • 蘋果
  • 香蕉
  • 橙子
  • 葡萄

每個水果的總數加起來爲100%。

在餅圖中,例如代表蘋果的切片始終爲綠色。香蕉永遠是黃色的,等等。每個月我都要更新餅圖,每個月蘋果,香蕉,橘子和葡萄的價值都會發生變化。但是,切片顏色不會改變。

我的問題是 - 有沒有辦法每月更新餅圖並保持與每種水果相關的顏色?另外請記住,有些月份可能會有額外的成果,有些月份可能會遺漏一些成果。

我試着根據每個切片的'Points(x)'值來改變它,但是因爲系列的數量可能會逐月改變,所以它不起作用。正如你可以從下面看到的,我已經設法根據每個切片的'Points(x)'值來更改它,但是我想知道是否可以包含一個IF循環來說類似... IF category axis =「Apples 」 Selection.Format.Fill ......(補片與RGB(X,X,X))等

次試驗(+)

ActiveChart.SeriesCollection(1).Select 
ActiveChart.SeriesCollection(1).Points(2).Select 
With Selection.Format.Fill 
    .Visible = msoTrue 
    .ForeColor.RGB = RGB(255, 144, 44) 
    .Transparency = 0 
    .Solid 
End With 
ActiveChart.SeriesCollection(1).Points(3).Select 
With Selection.Format.Fill 
    .Visible = msoTrue 
    .ForeColor.RGB = RGB(112, 48, 30) 
    .Transparency = 0 
    .Solid 
End With 
    ActiveChart.SeriesCollection(1).Points(6).Select 
With Selection.Format.Fill 
    .Visible = msoTrue 
    .ForeColor.RGB = RGB(112, 48, 160) 
    .Transparency = 0 
    .Solid 
End With 

末次

如果有人可以幫助我會很感激。

+0

後你試過沒有工作的代碼 - 我們更容易修復現有的代碼要比從頭創建整個事情。 –

回答

0

像這樣的東西應該工作

Sub Tester() 

    Dim cht As Chart, pts As Points 
    Dim sc As Series 
    Dim x As Integer 
    Dim sliceName As String, clr As Long 

    Set cht = ActiveSheet.ChartObjects(1).Chart 
    Set sc = cht.SeriesCollection(1) 
    Set pts = sc.Points 

    'loop through all the points 
    For x = 1 To pts.Count 

     sliceName = sc.XValues(x) 

     Select Case sliceName 
      'assign a specific color... 
      Case "A": clr = vbYellow 'RGB(255,255,0) 
      Case "B": clr = vbGreen 'RGB(0,255,0) 
      Case "C": clr = vbRed 'RGB(255,0,0) 
      Case Else: clr = -1 '...or do nothing 
     End Select 

     If clr <> -1 Then 
      With pts(x).Format.Fill 
       .ForeColor.RGB = clr 
       .Transparency = 0 
       .Solid 
      End With 
     End If 

    Next x 

End Sub 
+0

這個效果很好 - 謝謝! – user2497019