2017-03-14 7 views
0

私は積み重なった棒グラフの上に要素のタイミングを積み重ねることによってジョブの要素を表示するExcelで山津チャートを作成しようとしています。私は、今得ている色の虹の代わりに、ラベルに基づいて要素を色づけできるようにしたい。たとえば、VAがあるときは、VAのすべての要素をグラフで緑色にしたいと思います。これはExcelのデータの例です。Excelスタックバーチャートラベリングに基づいて異なる色

徒歩負荷カートNVA 6.35 Excel Data

Excel Data

私はこのVBAコードを試してみましたが、動作するようには思えません。私は、VBAがどのように変数を使用しているかを完全には理解できないかもしれません。具体的には、seriesArray変数がエラーをスローしています。どんな助けもありがとう。 'コード' サブcolor_chart()

Dim pointIterator As Integer, _ 
    seriesArray() As Variant 

seriesArray = Worksheets("Chart1").ChartObjects(1).Chart.SeriesCollection(1).Values 

    For pointIterator = 1 To UBound(seriesArray) 

     If InStr(seriesArray(pointIterator), "VA") > 0 Then 
      ActiveWorkbook.Sheets("Sheet1").ChartObjects(chartIterator). _ 
      Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _ 
      RGB(0, 255, 0) 
     ElseIf InStr(seriesArray(pointIterator), "NVA") > 0 Then 
      ActiveWorkbook.Sheets("Sheet1").ChartObjects(chartIterator). _ 
      Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _ 
      RGB(255, 0, 0) 
     Else 
      ActiveWorkbook.Sheets("Sheet1").ChartObjects(chartIterator). _ 
      Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _ 
      RGB(235, 235, 235) 
     End If 

Next pointIterator 

End Subの 'コード' 私の知る限り、一般的に、このに直面したとき、あなたは2つの選択肢があります知っているよう

+1

私は、あなたが、あなたの一連のループにいくつかのVBAコードを書くの名前を読んで、色を変更する必要があるとしていると思います。これはあなたが始めるのを助けるかもしれません:http://stackoverflow.com/questions/40427112/excel-vba-choosing-chart-color-based-on-series-value-comparison – Adam

+0

あなたは間違いなくここでいくつかのVBAの魔法が必要になります。 – Taosique

答えて

1

  • 新しい '仮想' 作りグラフに追加することができます。データに対応していない空白はどこにでもあります。カテゴリ( 'NVA'、 'VA'、 'Wate')に対応する追加の列を作成するには、検索機能(index/matchなど)を使用します。あなたのデータのスクリーンショットは、列A、B、C及びDにあるのであれば、列Eに式を追加します。

    =IF(B2="NVA",C2,"") 
    

    とお互い列に「NVA」を交換してください。 残念ながら、これは、シリーズを扱う他の方法のために、あなたが望む方法で、選択したグラフタイプ(スタックバー)では機能していません。他のグラフタイプ(here's an example)でも動作します。

  • VBAを使用してください。

    .Chart.SeriesCollection([myseries]).Interior.Color = RGB(155, 187, 89) 
    
関連する問題