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

Vba 以黄色突出显示第3、6、9、12行中小于0.05的单元格,vba,excel,Vba,Excel,我试图突出显示第3、9、12行中小于0.05的黄色单元格,以及选定单元格上方和下方的单元格。有人知道吗?非常感谢 我试过这段代码,它是有效的,但是有没有更有效的方法呢?i、 e.循环列而不是键入B、C、D。。。等 私有子命令按钮1_单击() 我想我会坚持多久 对于i=3到16,步骤3 If Range("B" & i).Value < 0.5 Then Range("B" & i).Interior.ColorIndex = 6 If Range("B" &

我试图突出显示第3、9、12行中小于0.05的黄色单元格,以及选定单元格上方和下方的单元格。有人知道吗?非常感谢


我试过这段代码,它是有效的,但是有没有更有效的方法呢?i、 e.循环列而不是键入B、C、D。。。等

私有子命令按钮1_单击() 我想我会坚持多久

对于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
如果范围(“B”和i).值<0.5,则范围(“B”和i).Interior.ColorIndex=6
如果范围(“B”和i).Value<0.5,则范围(“B”和i).Offset(-1,0).Interior.ColorIndex=6
如果范围(“B”和i).Value<0.5,则范围(“B”和i).Offset(1,0).Interior.ColorIndex=6
如果范围(“C”和i).Value<0.5,则范围(“C”和i).Interior.ColorIndex=6
如果范围(“C”和i).Value<0.5,则范围(“C”和i).Offset(-1,0).Interior.ColorIndex=6
如果范围(“C”和i).Value<0.5,则范围(“C”和i).Offset(1,0).Interior.ColorIndex=6
接下来我
End Sub

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

您的外部循环在正确的轨道上,并且可以像您要求的和我在下面演示的那样通过列添加循环。我将每个循环迭代的三个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
公共子命令按钮1\u单击()
将行设置为整数,列设置为整数
将ws设置为工作表
设置ws=ThisWorkbook.Worksheets(“Sheet4”)
对于第3至15行,步骤3
对于col=2到ws.Cells(1,ws.Columns.Count).End(xlToLeft.Column)
如果ws.Cells(row,col).Value<0.5,而ws.Cells(row,col.Value)则为“”
ws.Range(单元格(第1行,列),单元格(第1行,列)).Interior.ColorIndex=6
其他的
ws.Range(单元格(第1行,列),单元格(第1行,列)).Interior.ColorIndex=xlNoFill
如果结束
下一列
下一排
端接头

您好,谢谢您的回复。我实际上正在考虑通过vba代码来实现它。如果能知道更多,那就太好了!在这种情况下,您可以使用循环扫描所有填充的单元格,并检查它们是否满足您的要求(它们的价值是我尝试了这段代码,它可以工作,但我只是想知道是否有更有效的方法来做到这一点?即循环列,而不是像我建议的那样键入B、C、D…等等)“在这种情况下,您可以使用循环扫描所有填充的单元格”。这意味着您可以使用
Do直到IsEmpty(ws.cells(i,4))
例如,其中i是每增加一次的行计数器,4是第4列。此命令将循环第4行中的每个单元格,直到找到一个空单元格。