Excel 用于检查和更改行(如果需要)的代码
此代码应查看表中的每一行,并将该行的B和C值与其上方的行进行比较,对于满足要求的行,它不执行任何操作,但如果不满足要求,则不满足要求的每一行将以绿色突出显示 我遇到的问题是让范围或行在第3行和第4行上工作Excel 用于检查和更改行(如果需要)的代码,excel,vba,excel-formula,Excel,Vba,Excel Formula,此代码应查看表中的每一行,并将该行的B和C值与其上方的行进行比较,对于满足要求的行,它不执行任何操作,但如果不满足要求,则不满足要求的每一行将以绿色突出显示 我遇到的问题是让范围或行在第3行和第4行上工作 Sub IF_Loop() Dim Row As Range For Each Row In Range("A3:C155") If Row("B3").Value = "GR" And Row("B2").Value = 4 And Row("C3").Value = Row("C2
Sub IF_Loop()
Dim Row As Range
For Each Row In Range("A3:C155")
If Row("B3").Value = "GR" And Row("B2").Value = 4 And Row("C3").Value = Row("C2").Value Then
'Do nothing
Else
Row.Interior.Color = 9359529
End If
Next Row
End Sub
范围内的每一行(“A3:C155”)
这不是你想象的那样<代码>行只是一个iterable-将其命名为行
并不意味着它代表一行<范围(“A3:C155”)中的每一行的代码>正在迭代范围(“A3:C155”)
中的每个单元格
此外,您的If
将只测试B3
、B2
、C3
和C2
——您需要在其中设置一些变量,以便随着每次迭代而改变。试一下:
Sub IF_Loop()
Dim i As Long
For i = 3 To 155
If Not (Range("B" & i).Value = "GR" And Range("B" & i - 1).Value = 4 And Range("C" & i).Value = Range("C" & i - 1).Value) Then
Rows(i & ":" & i).Interior.Color = 9359529
End If
Next i
End Sub
您对每个循环使用
的本能是很好的。使用对象时,每个
循环的可能比i=…
循环的等效大
缺少的链接是范围
对象的行
属性。它允许您在范围内的行中循环,您可以使用.cells
访问该行中的特定单元格。例如,行。单元格(1,1)
是对行中第一个单元格的引用
因此,这里有另一种方法,你可以实现同样的目标:
Sub IF_Loop()
Dim row As Range
For Each row In Range("B3:C20").Rows
With row.Cells(1, 1)
If Not (.Value = "GR" And .Offset(-1, 0).Value = 4 And .Offset(0, 1).Value = .Offset(-1, 1).Value) Then
row.Interior.Color = 9359529
End If
End With
Next
End Sub