我正在做一个条件语句,我已经使用VBA自动化了我的电子表格。一切正常,直到这个公式。我猜它与文本字符串有关。我试过用& Chr(34)&之前和之后,它也没有工作。
以下是公式:
=IF(E2="RIA Review",IF(G2<=4,"Green",IF(G2=5,"Yellow","Red")), IF(E2="Delivery",IF(I2<=-7,"Green",IF(I2=-1,"Yellow","Red")),IF(E2="Launch/Close",IF(I2>=121,"Red",IF(I2>=111,"Yellow",IF(I2> =100,"Green","N/A"))),IF(OR(E2="Intent",E2="AE Review",E2="Initial Review",E2="AE Disposition"),IF(G2<=8,"Green",IF(OR(G2=9,G2=10)," Yellow",IF(G2>=11,"Red")))))))
这里是VBA中的代码(它改变了单元格引用,我仍然很难知道它是否在谈论正确的单元格)
Range("H2").Select
ActiveCell.FormulaR1C1 = _
"=IF(RC[-3]=""RIA Review"",IF(RC[-1]<=4,""Green"",IF(RC[-1]=5,""Yellow"",""Red"")),IF(RC[-3]=""Delivery"",IF(RC[1]<=-7,""Green"",IF(RC[1]=-1,""Yellow"",""Red"")),IF(RC[-3]=""Launch/Close"",IF(RC[1]>=121,""Red"",IF(RC[1]>=111,""Yellow"",IF(RC[1]>=100,""Green"",""N/A""))),IF(OR(RC[-3]=""Intent"",RC[-3]=""AE Review"",RC[-3]=""Initial Review"",RC[-3]=""AE Disposition"")," & _
"]<=8,""Green"",IF(OR(RC[-1]=9,RC[-1]=10),""Yellow"",IF(RC[-1]>=11,""Red"")))))))"
任何帮助都会很棒!
答案 0 :(得分:0)
根据我在决策制定中的理解,颜色将取决于3列: E , G 和 I 强>
使用最少的编码,您可以使用3个范围输入创建用户定义的函数,因此任何更改都将自动更新颜色。
在单元格中输入公式,颜色如=ColorStatus(E2,G2,I2)
和模块中的代码。我还抛出了不在任何检查中的E列,加上条件略有不同但结果相同(假设值中没有小数)。
更新了&#34;交付&#34;来自评论。
Function ColorStatus(E As Range, G As Range, I As Range) As String
Dim sColor As String
Select Case E.Value
Case "RIA Review"
' Color determined by column G
Select Case G.Value
Case Is < 5: sColor = "Green"
Case 5: sColor = "Yellow"
Case Else: sColor = "Red"
End Select
Case "Delivery"
' Color determined by column I
Select Case I.Value
Case Is < -6: sColor = "Green"
Case -1 To -6: sColor = "Yellow"
Case 0 To 99: sColor = "Red"
Case Else: sColor = "Black" ' From 100 days
End Select
Case "Launch/Close"
' Color determined by column I
Select Case I.Value
Case Is > 120: sColor = "Red"
Case Is > 110: sColor = "Yellow"
Case Is > 99: sColor = "Green"
Case Else: sColor = "N/A"
End Select
Case "Intent", "AE Review", "Initial Review", "AE Disposition"
' Color determined by column G
Select Case G.Value
Case Is < 9: sColor = "Green"
Case 9, 10: sColor = "Yellow"
Case Else: sColor = "Red"
End Select
Case Else
sColor = "Unknown State" ' Or change to "" to appear blank
End Select
ColorStatus = sColor
End Function