VBA – 如果三个单元格中的两个是真的

我正在试图构造和If语句转成一个选项卡如果三个单元格中的两个被着色,则为红色,或者如果仅着色则变为绿色。 我希望能有一个更简单的方法来纠正这个问题,而不是像这样的陈述。

Dim dateRng As String, num As Integer, j As Integer, irng As Range, frng As Range dateRng = Sheets("Input Raw Data").Range("B" & counter + 2).Value num = Sheets("Tool Setup").Range("C18").Value NumPts = num * 3 For s = 1 To Sheets.Count With Sheets(s) For j = 1 To num If .Name = j Then .Range("A1:C1").Merge .Range("A1") = dateRng .Name = Sheets("Point Names").Range("B" & (3 * j - 1)) End If Next j End With Next s For s = 1 to Sheets.Count With Sheets(s) For y = 1 To NumPts If .Name = Sheets("Reporting").Range("B" & (12 * y - 5)) Then For k = 6 To -1 Set irng = Sheets("Reporting").Range("A" & (12 * y - k)) Set irng = Sheets("Reporting").Range(irng, irng.End(xlToRight).End(xlToRight)) irng.Copy (.Range("A2")) Next k .Columns("A:A").ColumnWidth = 12 .Columns("B:B").EntireColumn.AutoFit If .Range("B7").Interior.ColorIndex > 0 Then a = 1 End If If .Range("B8").Interior.ColorIndex > 0 Then a = a + 1 End If If .Range("B9").Interior.ColorIndex > 0 Then a = a + 1 End If If a >= 2 Then .Tab.ColorIndex = 3 ElseIf a <= 1 Then .Tab.ColorIndex = 4 End If End If y = y + 2 Next y End With Next s 

像这样的东西可能会帮助你。 它仍然有多个if语句。 但是这些陈述很简单,不需要处理不同单元格的组合是如何着色的。

另外,我使用colorindex > 0作为填充颜色的条件。

 a = 0 If .Range("B7").Interior.ColorIndex > 0 Then a = 1 End If If .Range("B8").Interior.ColorIndex > 0 Then a = a + 1 End If If .Range("B9").Interior.ColorIndex > 0 Then a = a + 1 End If If a = 2 Then .Range("B10").Interior.ColorIndex = 3 ElseIf a = 1 Then .Range("B10").Interior.ColorIndex = 43 End If