2012-10-22 42 views
2

我有一個財務數據,指示項目的健康狀況,並根據差異填充顏色和字母以指示健康狀況。例如,如果varinace小於5%,它會用字母「G」填充綠色,> 5%但小於20%填充「Y」和> 20%=「R」。我已經使用if語句來獲取它。但是我需要填充整個項目的顏色。VBA Excel的條件要求比例

有5個項目,這些都是要求:

  1. 如果任何5個項目中有「R」,那麼整體健康是「R」
  2. 如果1/5的項目是「Y」如果2/5 =「Y」和3/5「G」,那麼整體健康狀況爲「Y」
  3. 如果3/5 =「Y」且3/5 =「G」則整體健康爲「G」
  4. 如果3/5 = 「Y」和2/5「G」則整體健康爲「Y」
  5. 如果4/5 =「Y」和1/5「G」則「Y」
  6. 如果5/5 = 「Y」,然後 「Y」
  7. 如果5/5 = 「G」,那麼 「G」

所以,如果第一個項目是G,第二個項目爲Y 3項目Y,4項目是G,第5個項目是RI,希望它爲全面健康打造「R」。

我試過使用if語句,但我必須做的組合的數量太多了。

我如何使用VBA excel來創建這種「比例」要求?

謝謝

+0

而不是R,G等是否可以使用數值來表示健康,然後只需使用一個適合所有公式? –

回答

0

您可以爲計數每個Y,R和G變量,然後做一個簡單的,如果elseif的設置等於R,Y,或g基於您的規則細胞:

Option Explicit 

Sub getcounts() 

Dim g As Long 
Dim r As Long 
Dim y As Long 
Dim ovrallhealth As Range 
Dim variancerange As Range 
Set variancerange = Sheets(1).Range("A1:A5") 
Set ovrallhealth = Sheets(1).Range("B1") 

y = Application.WorksheetFunction.CountIf(variancerange, "y") 
g = Application.WorksheetFunction.CountIf(variancerange, "g") 
r = Application.WorksheetFunction.CountIf(variancerange, "r") 

If r > 0 Then 
    ovrallhealth = "R" 
ElseIf y = 1 And g = 4 Then 
    ovrallhealth = "G" 
ElseIf y = 2 And g = 3 Then 
    ovrallhealth = "Y" 
ElseIf y = 3 And g = 2 Then 
    ovrallhealth = "Y" 
ElseIf y = 4 And g = 1 Then 
    ovrallhealth = "Y" 
ElseIf y = 5 Then 
    ovrallhealth = "Y" 
ElseIf g = 5 Then 
    ovrallhealth = "G" 
End If 

End Sub 
+0

嗨斯科特,那是個好主意。我試過把這些代碼放在宏中,但是當我嘗試執行時,它會提示錯誤「未定義變量」並突出顯示設置的全局代碼。這是爲什麼發生?這是我寫的Set varaincerange = sheets(1).Range(「B5:B53」) 設置overallheatlh = sheets(1).Range(「B2」) – Doolie1106

+0

您是否將範圍和總體健康範圍設置得很小?我也會檢查拼寫。而不是使用圖紙索引,您可以說sheet(「sheetname」)。range(「B2」) – scott

+0

YES!它現在有效!非常感謝斯科特,我非常感謝! – Doolie1106