我还有一个问题,尽管我问的最后一个问题仍未解决。我有超过 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 的说法非常正确 - 如果可以使用函数来实现,则应避免使用它。