如果满足特定范围单元格的条件,则需要为单元格右侧的五个不同单元格上色

时间:2019-03-25 18:43:05

标签: excel vba

我是VBA的新手,因此非常感谢您的帮助。对于特定范围的单元格,我有if语句。因此,对于 A25:A31 ,如果cells.value = 1,那么我要在单元格(x,4)(x,7)(x,10)(x,13)满足条件的同一行都具有相同的背景色。我尝试过偏移,但它仅适用于一个偏移选择而不是多个。这是我的代码:

Set Rng1 = Range("A25:A31")
Set Rng2 = Range("B25:B31")
For Each cell In Rng1
    If cell.Value = "1" Then cell.Offset(0, 1).Cells.Interior.Color = Range("B12").Interior.Color
    If cell.Value = "2" Then cell.Offset(0, 1).Cells.Interior.Color = Range("B13").Interior.Color
    If cell.Value = "3" Then cell.Offset(0, 1).Cells.Interior.Color = Range("B14").Interior.Color
    If cell.Value = "4" Then cell.Offset(0, 1).Cells.Interior.Color = Range("B15").Interior.Color
    If cell.Value = "5" Then cell.Offset(0, 1).Cells.Interior.Color = Range("B16").Interior.Color
Next Cell

因此,我基本上希望可以执行以下操作:

If cell.Value = "1" Then cell.Offset(0, 1 & 4 & 7 & 10).Cells.Interior.Color = Range("B12").Interior.Color

因此,不仅更改了偏移量的一列,还更改了右侧的单元格,四个单元格和七个单元格等。

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

Option Explicit
Sub Test()

    Dim C As Range
    With ThisWorkbook.Sheets(1) 'change this for the name of your sheet
        For Each C In .Range("A25:A31")
            If C = 1 Then
                Union(C, .Cells(C.Row, 4), .Cells(C.Row, 7), .Cells(C.Row, 10), .Cells(C.Row, 13)).Interior.Color = 2 'whatever colour you need
            End If
        Next C
    End With

End Sub

答案 1 :(得分:0)

Dim v 
Set Rng1 = Range("A25:A31")
Set Rng2 = Range("B25:B31")

For Each cell In Rng1.Cells
    v = cell.Value

    Select Case v
        Case 1,2,3,4,5: 
            cell.EntireRow.Range("D1,G1,J1,M1").Interior.Color = _
                  Range("B11").Offset(v, 0).Interior.Color
    End Select

Next Cell

请注意,Range()与EntireRow有关 ,因此在编写时它将始终在该行上工作。

答案 2 :(得分:0)

我同意@JohnColeman的评论,但是如果您想要vba,我认为这就是您想要的。但是@TimWilliams更高级。

Sub ColorCells()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
    For Each cel In ws.Range("A25:A31")
        If cel.Value = 1 Then
            cel.Resize(, 2).Interior.Color = Range("B12").Interior.Color
            cel.Offset(, 3).Interior.Color = Range("B12").Interior.Color
            cel.Offset(, 6).Interior.Color = Range("B12").Interior.Color
            cel.Offset(, 9).Interior.Color = Range("B12").Interior.Color

        ElseIf cel.Value = 2 Then
            cel.Resize(, 2).Interior.Color = Range("B13").Interior.Color
            cel.Offset(, 3).Interior.Color = Range("B13").Interior.Color
            cel.Offset(, 4).Interior.Color = Range("B13").Interior.Color
            cel.Offset(, 9).Interior.Color = Range("B13").Interior.Color

        ElseIf cel.Value = 3 Then
            cel.Resize(, 2).Interior.Color = Range("B14").Interior.Color
            cel.Offset(, 3).Interior.Color = Range("B14").Interior.Color
            cel.Offset(, 6).Interior.Color = Range("B14").Interior.Color
            cel.Offset(, 9).Interior.Color = Range("B14").Interior.Color

        ElseIf cel.Value = 4 Then
            cel.Resize(, 2).Interior.Color = Range("B15").Interior.Color
            cel.Offset(, 3).Interior.Color = Range("B15").Interior.Color
            cel.Offset(, 6).Interior.Color = Range("B15").Interior.Color
            cel.Offset(, 9).Interior.Color = Range("B15").Interior.Color

        ElseIf cel.Value = 5 Then
            cel.Resize(, 2).Interior.Color = Range("B16").Interior.Color
            cel.Offset(, 3).Interior.Color = Range("B16").Interior.Color
            cel.Offset(, 6).Interior.Color = Range("B16").Interior.Color
            cel.Offset(, 9).Interior.Color = Range("B16").Interior.Color
        End If
    Next cel
End Sub