2011-04-19 66 views
5

假設我有以下的表結構(A1:C3)的Excel 2007/2010色標條件格式基於式

 A B C 
1 H1 H2 H3 
2 1 1 3 
3 4 5 4 

我怎樣才能應用的條件格式,條件如下:

  • 只有標題單元格(H1,H2,H3)被着色
  • 着色方案是2或3色標
  • 用於計算顏色的值應爲A2/A3,B2/B3,C2/C3 (範圍是0-1)

注:我不是在尋找一個解決方案VBA,我可以做我自己,但是如果你有一些瘋狂的1個班輪請告訴:)
注:我不想應用很多規則,如if x<0.3 red,if 0.3<x<0.6 orange

有沒有乾淨的解決方案呢?
基於公式的值可以應用3色標度嗎?

+0

你問它是否是條件格式化可能沒有條件? – 2011-04-19 14:37:14

+0

不,我在問是否可以將條件格式化,使用3色尺度樣式與公式結合使用;所以不是基於單元格值進行着色,而是基於涉及其他單元格的公式的結果進行着色 – 2011-04-20 17:16:38

+0

如果它非常短,我還會接受VBA腳本。我正在尋找一個快速而骯髒的破解:)我知道如何編寫一個遍歷所有標題的長解決方案,計算顏色......但僅僅爲了好玩,我想看到一些聰明的解決方案:D – 2011-04-20 17:30:37

回答

1

我認爲你正在尋找漂亮的東西,不幸的是不存在。我只看到了兩種選擇。

您可以使用三種條件進行條件格式化,或者如果您要使用默認單元格顏色作爲三種條件之一(例如,公式Is =(A2/A3)< 0.3,公式Is =(A2/A3)< 0.6,或任何你想要的閾值)。您可以在Excel中的一個標題單元格上手動應用此格式,並將其複製到所有標題中;或通過VBA應用它。

或者您可以在VBA中對頁眉進行着色,並在頁面上放置一個調用代碼以更新顏色的按鈕。

With Range("A1") 
    For i = 1 To 3 
     colorscale = .Cells(2, i).Value/.Cells(3, i).Value 
     .Cells(1, i).Interior.Color = _ 
      RGB(colorscale * 255, colorscale * 255, _ 
      colorscale * 255) ' for example. Or pick your colors otherwise. 
    Next i 
End With 

聽起來像第一個選項(條件格式)更適合我,因爲它會根據單元格值自動更新顏色。但我不得不承認,爲什麼要尋找比這更「乾淨」的東西,因爲它實際上是一個非常簡單的解決方案。兩個條件構成了「很多規則」嗎?不是英語語言的任何延伸......

+0

這不僅僅是兩條規則。我想根據結果看到從紅 - 黃 - 綠的完整梯度,可以是任何子單元分數。我希望以某種方式能夠使用某些直接API來計算此漸變,但我不認爲有什麼可做的。 – 2011-04-22 21:01:19

+0

啊哈。 「2或3色標」我認爲你的意思是一個有兩到三種顏色的刻度。你只是指RGB。 – 2011-04-23 11:11:31

0

這裏是讓·弗朗索瓦·科貝特代碼改編,是以顏色從紅黃綠漸變:

With Range("A1") 
    For i = 1 To 3 
     ColorScale = .Cells(2, i).Value/.Cells(3, i).Value 
     If ColorScale < 0.5 Then 
      red = 255 
      green = ColorScale * 2 * 255 
     Else 
      red = (1 - ColorScale) * 2 * 255 
      green = 255 
     End If 

     .Cells(1, i).Interior.Color = RGB(red, green, 0) 
    Next i 
End With 
+0

Excel 2007是否接受任意單元格顏色?還是它仍然限於像Excel 2003這樣的40色調色板? (我仍然在使用2003.) – 2011-04-23 11:13:32

+0

我相信是這樣的,我只是跑了一圈從1到100,並得到了一個不錯的漸變。 (至少在Excel 2010中,我在家裏沒有2007) – 2011-04-29 17:09:31

+0

不錯。調色板是三十年前的! – 2011-04-29 17:42:44