VBA Excel的比率条件要求

时间:2012-10-22 15:35:04

标签: excel-vba vba excel

我有一个财务数据,表明项目的健康状况,并根据差异填充颜色和字母以指示健康状况。例如,如果varinace小于5%,则其填充绿色字母“G”,> 5%但小于20%填充“Y”和> 20%=“R”。我已经使用if语句来实现这一点。但是我需要填充整个项目的颜色。

有5个项目,这些是要求:

  1. 如果5个项目中的任何一个具有“R”,那么整体健康状况为“R”
  2. 如果1/5项目为“Y”且4/5 =“G”则整体健康状况为“G”
  3. 如果2/5 =“Y”和3/5“G”则整体健康状况为“Y”
  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”
  8. 因此,如果第一个项目是G,第二个项目是Y第三个项目是Y,4个项目是G,第五个项目是R我希望它能够为整体健康提供“R”。

    我尝试过使用if语句,但我必须做的组合量太多了。

    如何使用VBA excel创建这种“比率”要求?

    谢谢

1 个答案:

答案 0 :(得分:0)

您可以创建一个对Y,R和G进行计数的变量,然后根据您的规则设置一个简单的if ifif来设置一个等于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