比较两张表中的两列

比较两张表中的两列

我还有一个问题,尽管我问的最后一个问题仍未解决。我有超过 100,000 条记录的大量数据。我使用下面的代码循环遍历数据,以便任何重复的记录的背景颜色都会变成红色。代码运行良好,但目前处理时间太长(15-20 分钟)。我的问题是,我可以做些什么来加快处理速度?

代码:

Dim wks As Worksheet, wrkb As Worksheet
Dim rng As Range, rngNew As Range
Dim intCount As Integer, intCount1 As Integer
Dim i As Integer, im As Integer

'Sheet1
Set wks = Worksheets("sheet1")
wks.Range("B2").Activate

'sheet2
Set wksb = Worksheets("sheet2")

' Return current data region.

Set rng = wks.Range("B1").CurrentRegion
Set rngNew = wksb.Range("B1").CurrentRegion

intCount = rng.Rows.Count
intCount1 = rngNew.Rows.Count

For i = 2 To intCount
            im = 2
    For im = 2 To intCount1

        If (rng.Cells(im, 2).Value = rngNew.Cells(i, 2).Value) Then

            rng.Cells(i, 2).Interior.ColorIndex = 3

    Exit For
        End If

    Next im
Next 

谢谢你的帮助

答案1

您无需使用 VBA 来循环遍历数据,而是可以使用条件格式来快速为单元格着色。

VBA 并不是最好的解决方案,因为它只是代码。一些内置的 Excel 函数比任何 VBA 代码都更高效、更快。

描述工作表的布局以及您想要应用于颜色编码单元格的逻辑。

然后可以建议条件格式。我没有时间将您的 VBA 逆向工程到工作簿范围中。

答案2

其中一个工作表中的辅助列应该可以做到这一点,使用COUNTIF公式来计算另一个工作表中符合条件的条目数。然后添加条件格式,如果公式返回 >0,则将单元格涂成红色。

@teylyn 关于 VBA 的说法非常正确 - 如果可以使用函数来实现,则应避免使用它。

相关内容