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

Excel 根据其他两种单元格颜色更改单元格颜色,excel,vba,cell,Excel,Vba,Cell,我需要创建一个VBA公式,当我手动用其他颜色填充其他两个单元格时,该公式将帮助我自动更改单元格的颜色 以下是一个例子: 作为手动填充单元格K和M的结果,我需要在第一行中以绿色自动填充单元格Q 第二个也是一样的:如果我用黄色填充K,用绿色填充M,那么Q的结果一定是用绿色填充 这可能吗?如果你能给我举一个前两个条件的例子,让我自己来建立下面的条件,那就足够了 这是我的密码: Sub RatingColor() If range("F13").Interior.Color

我需要创建一个VBA公式,当我手动用其他颜色填充其他两个单元格时,该公式将帮助我自动更改单元格的颜色

以下是一个例子:

作为手动填充单元格K和M的结果,我需要在第一行中以绿色自动填充单元格Q

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

这可能吗?如果你能给我举一个前两个条件的例子,让我自己来建立下面的条件,那就足够了

这是我的密码:

Sub RatingColor()
    If range("F13").Interior.Color = RGB(146, 208, 80) And range("H13").Interior.Color = RGB(146, 208, 80) Then
     range("J13").Interior.Color = RGB(146, 208, 80)
     ElseIf range("F13").Interior.Color = RGB(255, 255, 0) And range("H13").Interior.Color = RGB(146, 208, 80) Then
     range("J13").Interior.Color = RGB(146, 208, 80)
     
     ElseIf range("F13").Interior.Color = RGB(255, 192, 0) And range("H13").Interior.Color = RGB(146, 208, 80) Then
     range("J13").Interior.Color = RGB(255, 255, 0)
     ElseIf range("F13").Interior.Color = RGB(255, 255, 0) And range("H13").Interior.Color = RGB(255, 255, 0) Then
     range("J13").Interior.Color = RGB(255, 255, 0)
     ElseIf range("F13").Interior.Color = RGB(146, 208, 80) And range("H13").Interior.Color = RGB(255, 255, 0) Then
     range("J13").Interior.Color = RGB(255, 255, 0)
     
     ElseIf range("F13").Interior.Color = RGB(255, 192, 0) And range("H13").Interior.Color = RGB(255, 255, 0) Then
     range("J13").Interior.Color = RGB(255, 192, 0)
     ElseIf range("F13").Interior.Color = RGB(146, 208, 80) And range("H13").Interior.Color = RGB(255, 192, 0) Then
     range("J13").Interior.Color = RGB(255, 192, 0)
     ElseIf range("F13").Interior.Color = RGB(255, 255, 0) And range("H13").Interior.Color = RGB(255, 192, 0) Then
     range("J13").Interior.Color = RGB(255, 192, 0)
     
     ElseIf range("F13").Interior.Color = RGB(255, 192, 0) And range("H13").Interior.Color = RGB(255, 192, 0) Then
     range("J13").Interior.Color = RGB(255, 0, 0)
     ElseIf range("F13").Interior.Color = RGB(146, 208, 80) And range("H13").Interior.Color = RGB(255, 0, 0) Then
     range("J13").Interior.Color = RGB(255, 0, 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, 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, 8).Interior.color 'Check cell color in column H
                            Case colorGreen, colorYellow, colorOrange
                                .Cells(i, 10).Interior.color = .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

您需要检查前两个单元格的Interior.Color属性,因此循环行(?或列?您需要向我们显示单元格的布局以提供更多信息)并检查前两个单元格的颜色,这取决于If/Else语句。如果您有任何代码,请编辑文章以显示您的代码,以便我们可以进一步帮助您。如果M是一个恒定的颜色(绿色),那么您只需要检查K就可以得到Q的颜色。没有一个标准事件能够由单元内部颜色变化触发。但也可以创建一个类来构建它。@RaymondWu完成了!使用For loop来执行循环,可能可以使用工作表_Change事件来检测更改,但我不确定它是否可以检测到内部颜色的更改。不幸的是,我现在要去睡觉了,所以,如果没有人回答,请尝试自己解决这个问题,祝你好运!您是否仍然需要能够检测单元内部颜色变化的事件?如果是的话,我现在有一些时间,我可以尝试建立必要的类和必要的过程来调用…非常感谢!