公式不在VBA中工作,但在单元格中工作

时间:2014-05-05 20:20:09

标签: excel vba excel-vba

我正在做一个条件语句,我已经使用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"")))))))"

任何帮助都会很棒!

1 个答案:

答案 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