2017-03-29 25 views
0

ちょうどVBAを使い始めました。円グラフのセグメントを、円グラフに直接フィードしない値に基づいて色分けする方法はありますか? 私のサンプルデータは、次のようになります。セルの値に基づいて円グラフの色の色を変更します

 Steps % Complete Status 
     Step1   100%   B (Blue) 
     Step2   50%   R (Red) 
     Step3   30%   G (Green) 
     Step4   15%   A (Yellow) 

円グラフのみ最初の2列(ステップおよび%完了)を使用して生成されます。しかし、私は円グラフの各セグメントをステータス列に基づいて色付けしたいと思います。

+0

を参照してください。チャートの値を提供する細胞の内装色に応じてチャートを色付けします動作しません。 http:///stackoverflow.com/questions/17194105/how-can-i-color-dots-in-a-xy-scatterplot-according-to-column-value/17195673#17195673 –

答えて

0

ステータスカラム(ステータスがRの場合は完了色が%の場合)に応じて、各チャート入力セル(%完了列)を色付けするために、vbaを使用して条件付き書式で最初に設定する -
**注 - 通常の条件付き書式は

Dim status_value As Range 
Set status_value = Sheets("Sheet 1").Cells(20, 3) - 
    If mycell.Value = "B" Then 
     mycell2.Interior.color = RGB(0, 112, 192) 'Blue 
    ElseIf mycell.Value = "R" Then 
     mycell2.Interior.color = RGB(255, 0, 0) ' Red 
    ElseIf mycell.Value = "A" Then 
     mycell2.Interior.color = RGB(255, 192, 0) 'Amber 
    ElseIf mycell.Value = "G" Then 
     mycell2.Interior.color = RGB(0, 176, 80) ' Green 
    ElseIf mycell.Value = "NA" Then 
     mycell2.Interior.color = RGB(166, 166, 166) 'Grey 
    End If 

は、以下のコードは、これがあなたを助けている場合

Sub ColorCharts() 
     For Each ch In ActiveSheet.ChartObjects 
      For Each ser In ch.Chart.SeriesCollection 
      s = Split(ser.Formula, ",") 
       For i = 1 To UBound(ser.Values) 
        ser.Points(i).Interior.color = Range(s(2)).Cells(i).Interior.color 
       Next i 
      Next ser 
     Next ch 
     End Sub 
関連する問題