2012-03-14 86 views
3

我正在處理Excel項目,並試圖通過相同的推理來格式化條形圖的顏色(以及後來的餅圖)以便基於另一範圍的數據顯示RED,GREENYELLOW。數據範圍是...有條件地改變條形圖在Excel中的條形圖中的條形圖基於範圍

Overview

範圍E15:E36

這些值百分比。根據它們之間的百分比,我希望酒吧格式化爲綠色,紅色或黃色。

如果之間100 - 90,綠色 如果之間89 - 70,黃色 如果69之間 - 1,紅

下面是我的代碼這一點(對於條形圖):

Sub Macro2() 
     ActiveSheet.Shapes.AddChart.Select 
     ActiveChart.ChartType = xlColumnClustered 
     ActiveChart.SetSourceData Source:=Sheets("Overview").Range("A15:A36") 
     ActiveChart.SetSourceData Source:=Sheets("Overview").Range("A15:A36,B15:B36") 
     ActiveChart.ApplyLayout (2) 
     ActiveSheet.ChartObjects("Chart 3").Activate 
     ActiveChart.Legend.Select 
     Selection.Delete 
     ActiveSheet.ChartObjects("Chart 3").Activate 
     ActiveChart.ChartTitle.Select 
     ActiveSheet.ChartObjects("Chart 3").Activate 
     ActiveChart.ChartTitle.Text = "Rating Site Distribution" 
    End Sub 

任何幫助將不勝感激!我對VBA一點也不熟悉,並且完全不在我的這個元素之列...

此外,同樣的函數是否可以用於餅圖來通過相同的參數定義顏色?

預先感謝!!

+0

看到這個鏈接喬恩(http://peltiertech.com/WordPress/conditional-formatting-of-excel-charts/) – 2012-03-14 14:31:50

+0

感謝您的快速反應......我見過這個,但我沒有相信這將適用於動態數據集......每次數據更改時,我都必須重新安排分組。我更喜歡使用指定範圍來確定顏色的動態解決方案......謝謝! – cupcakes 2012-03-14 15:32:34

+0

@Ben目前對我的問題和答案進行整理:我的嘗試是否回答你的問題? – whytheq 2015-05-01 13:12:38

回答

2

這裏是一個vba函數,我用它來反轉負槓,所以它們是紅色的。也許這可以適應:

的功能是從這樣的工作簿中的一個模塊中的子程序調用:

Sub FixTheGraph() 
    FormatGraph("Overview") 
End Sub 

這裏的功能。您可以將其粘貼到子例程下面:

Function FormatGraph(myWorksheet As String) 

Excel.Sheets(myWorksheet).Select 

Dim myChartObject As ChartObject 
For Each myChartObject In Excel.ActiveSheet.ChartObjects 
    myChartObject.Select 

    Dim myPoint As Integer, valArray 

    With Excel.ActiveChart.SeriesCollection(1) 
     valArray = .Values 
     For myPoint = 1 To .Points.Count 
      'myVal = valArray(myPoint) 
      Select Case valArray(myPoint) 
       Case 0.9 To 1 
        With .Points(myPoint) 
         .Interior.ColorIndex = 1 '<change colour to suit 
        End With 
       Case 0.7 To 0.9 
        With .Points(myPoint) 
         .Interior.ColorIndex = 5 '<change colour to suit 
        End With 
       Case Is < 0.7 
        With .Points(myPoint) 
         .Interior.ColorIndex = 3 
        End With 
       End Select 
     Next 
    End With 

Next myChartObject 
Excel.Sheets(myWorksheet).Cells(1, 1).Select 

End Function 
+0

我正在嘗試適應它的過程中...當我到達某處時我會回覆...感謝您嘗試幫助! – cupcakes 2012-03-14 18:46:47

+0

到目前爲止還沒有愛...我會繼續嘗試以某種方式整合,但我可能最終只會把它放在自由職業者身上並給予獎勵。我真的脫離了VBA的元素。目前這不是重中之重,但我感謝您的幫助! – cupcakes 2012-03-14 19:23:27

+0

好的 - 你的深度如何?你知道如何設置代碼模塊和粘貼這個函數的位置嗎? – whytheq 2012-03-14 20:47:22

2

您要做的是圖表類型xlBarStacked。然後給它三個系列 - 每種顏色一個。

在每個系列中,如果元素的值是在範圍內,使用該值,否則series.Value元件設置爲0。

由於您的範圍是相互排斥的,每個條將只有一個顏色。

相關問題