2

我有一个财务数据,表明项目的健康状况,并根据差异填充颜色和字母以指示健康状况。例如,如果方差小于 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"

因此,如果第一个项目是 G,第二个项目是 Y,第三个项目是 Y,第四个项目是 G,第五个项目是 RI,希望它填充“R”以获得整体健康。

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

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

谢谢

4

1 回答 1

0

您可以创建一个变量来计算每个 Y、R 和 G,然后执行简单的 if 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
于 2012-10-22T16:09:24.813 回答