微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据其他 2 种单元格颜色更改单元格颜色

如何解决根据其他 2 种单元格颜色更改单元格颜色

我需要创建一个 VBA 公式,当我用其他颜色手动填充其他 2 个单元格时,它可以帮助我自动更改单元格的颜色。

这是一个例子:

enter image description here

由于手动填写单元格K和M,我需要单元格Q在第一行自动填充为绿色。

第二个也一样:如果我用黄色填充K+用绿色填充M,那么Q的结果一定是它被绿色填充。

这可能吗?如果你能给出前两个条件的例子,我自己构建以下条件就足够了。

这是我的代码

Sub ratingColor()
    If range("F13").Interior.Color = RGB(146,208,80) And range("H13").Interior.Color = RGB(146,80) Then
     range("J13").Interior.Color = RGB(146,80)
     ElseIf range("F13").Interior.Color = RGB(255,255,0) And range("H13").Interior.Color = RGB(146,80)
     
     ElseIf range("F13").Interior.Color = RGB(255,192,80) Then
     range("J13").Interior.Color = RGB(255,0)
     ElseIf range("F13").Interior.Color = RGB(255,0) And range("H13").Interior.Color = RGB(255,0) Then
     range("J13").Interior.Color = RGB(255,0)
     ElseIf range("F13").Interior.Color = RGB(146,80) And range("H13").Interior.Color = RGB(255,0)
     
     ElseIf range("F13").Interior.Color = RGB(255,0)
    End If
End Sub

我已经创建了颜色公式并且它有效,但我现在需要的是循环部分,如果可能,每次更改颜色时自动应用它。

解决方法

这是基于您在帖子中给出的排列,将其放入您希望此代码运行的工作表模块中,请注意它实际上会在您在工作表上所做的每一次更改时触发,而不仅仅是在您改变颜色:

Private Sub Worksheet_Change(ByVal Target As Range)
        Dim colorGreen As Long
        Dim colorYellow As Long
        Dim colorOrange As Long
        Dim colorRed As Long
        Dim i As Long
        
        Const rowStart As Long = 2 'first row,change to your purpose
        Const rowEnd As Long = 20 'last row,change to your purpose
        
        'Define color to variables
        colorGreen = RGB(146,208,80)
        colorYellow = RGB(255,255,0)
        colorOrange = RGB(255,192,0)
        colorRed = RGB(255,0)
        
        With Sheet1 'change to correct worksheet reference
            For i = rowStart To rowEnd
                Select Case .Cells(i,6).Interior.color 'Check cell color in Column F
                    Case colorGreen
                        Select Case .Cells(i,8).Interior.color 'Check cell color in column H
                            Case colorGreen,colorYellow,colorOrange,colorRed: .Cells(i,10).Interior.color = .Cells(i,8).Interior.color
                        End Select
                    Case colorYellow
                        Select Case .Cells(i,colorOrange
                                .Cells(i,8).Interior.color
                        End Select
                    Case colorOrange
                        Select Case .Cells(i,8).Interior.color 'Check cell color in column H
                            Case colorGreen
                                .Cells(i,10).Interior.color = colorYellow
                            Case colorYellow
                                .Cells(i,10).Interior.color = colorOrange
                            Case colorOrange
                                .Cells(i,10).Interior.color = colorRed
                        End Select
                End Select
            Next i
        End With
End Sub

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。