Excel-VBA比较列数据

我对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 

提前致谢

有没有理由不使用条件格式,就像@Doug Glancy所build议的那样?

这对我来说工作得很好。

如果你想给它一个拍摄,做如下…

  • select整个行
  • 打开条件格式菜单(将取决于您的Excel版本。无论如何…)
  • 添加规则=$KU2>$LE2+50
  • 设置你想要的格式(也许填写黄色?)
  • 确认
  • 将格式复制到其他行

注意行索引(2,在这种情况下)不能有$符号。

希望能帮助到你。

你可能不想突出显示空白的行?

如果是这样,请使用

 If Cells(myRow, strF0_col).Value <> "" And _ Cells(myRow, strF0_col).Value = Cells(myRow, sF0_col).Value Then 

另外,像这样访问单元格的值非常慢。 如果你只处理100行,那么它的速度足够快,但如果这个数字增长,那么你会发现它减缓到一个痛苦的程度。

将范围值复制到一个variables数组然后循环到这个数组上更快。 search所以[Excel] "Variant Array"有很多答案显示如何做到这一点,并解释为什么它有帮助