突出显示第3,6,9,12行中小于0.05的黄色单元格

时间:2014-07-16 14:37:11

标签: vba excel-vba excel

我试图突出显示第3,9,12行中小于0.05的黄色单元格以及所选单元格上方和下方的单元格。有谁有任何想法?真的很感激!

我试过这段代码并且它有效但是有更有效的方法吗?即循环列而不是键入B,C,D ......等

Private Sub CommandButton1_Click() Dim i As Long

对于i = 3到16步骤3

  If Range("B" & i).Value < 0.5 Then Range("B" & i).Interior.ColorIndex = 6
  If Range("B" & i).Value < 0.5 Then Range("B" & i).Offset(-1, 0).Interior.ColorIndex = 6
  If Range("B" & i).Value < 0.5 Then Range("B" & i).Offset(1, 0).Interior.ColorIndex = 6

  If Range("C" & i).Value < 0.5 Then Range("C" & i).Interior.ColorIndex = 6
  If Range("C" & i).Value < 0.5 Then Range("C" & i).Offset(-1, 0).Interior.ColorIndex = 6
  If Range("C" & i).Value < 0.5 Then Range("C" & i).Offset(1, 0).Interior.ColorIndex = 6

Next i

End Sub

2 个答案:

答案 0 :(得分:0)

请查看Conditional Formatting in Excel,它基本上可以帮助您为需要提供某种自定义条件的单元格着色(在您的情况下选择第3,9和12行并应用条件)。 要为上面的单元格着色(例如),检查单元格“低于上面”(当前单元格)是否小于0.05

答案 1 :(得分:0)

你在外圈的正确轨道上,可以像你问的那样在列中添加一个循环,我将在下面演示。我将每个循环迭代的三个if语句压缩为一个,并添加了一个else条件,以便在不符合条件时清除旧颜色。显然,将工作表名称更改为您需要的任何名称。最好创建一个工作表引用,从而使用ws.Range而不仅仅是Range。它有助于确保Excel正在处理您认为正在处理的工作表。这至少应该让你接近。

Public Sub CommandButton1_Click()
    Dim row As Integer, col As Integer
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Sheet4")
    For row = 3 To 15 Step 3
        For col = 2 To ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
            If ws.Cells(row, col).Value < 0.5 And ws.Cells(row, col).Value <> "" Then
                ws.Range(Cells(row - 1, col), Cells(row + 1, col)).Interior.ColorIndex = 6
            Else
                ws.Range(Cells(row - 1, col), Cells(row + 1, col)).Interior.ColorIndex = xlNoFill
            End If
        Next col
    Next row
End Sub