我是Excel VBA的新手,我需要编写代码来完成一项简单的任务。我需要逐行比较两个不同列中的值,看看差异是否超过50.如果是这样,我需要突出显示整行。
我用其他语言编程,所以我对它的工作方式有基本的了解,但我不知道如何导航单元格/查看单元格内的内容。我尝试了这个,但它没有成功(它只会突出显示每一行)。我简化它来比较值是否相等,但无济于事(仍然突出显示所有内容)任何人都可以给我一些帮助吗?
Dim strF0_col As Integer, sF0_col As Integer
Dim myRow, counter As Integer
Dim rEnd As Integer
Sub compare_F0()
rEnd = 100
strF0_col = 307
sF0_col = 317
counter = 0
For myRow = 2 To rEnd Step 1
Application.StatusBar = counter & "rows highlighted."
If (Cells(myRow, strF0_col).Value = Cells(myRow, sF0_col).Value) Then
Cells(myRow, strF0_col).EntireRow.Interior.ColorIndex = 28
End If
Next myRow
End Sub
提前致谢
答案 0 :(得分:2)
有没有理由不使用条件格式,正如@Doug Glancy建议的那样?
这对我来说非常好。
如果您想拍摄,请执行以下操作...
=$KU2>$LE2+50
请注意,行索引(在本例中为2)不能包含$符号。
希望它有所帮助。
答案 1 :(得分:0)
您可能不想突出显示空白的行?
如果是,请使用
If Cells(myRow, strF0_col).Value <> "" And _
Cells(myRow, strF0_col).Value = Cells(myRow, sF0_col).Value Then
另外,访问像这样的单元格值非常慢。如果你只处理100行然后它足够快,但是如果这个数字增长那么你会发现它减慢到一个痛苦的程度。
将范围值复制到变量数组然后循环它会快得多。搜索SO [Excel] "Variant Array"
有许多答案显示如何执行此操作并解释其帮助