对于必须是Excel VBA的客户端,我有一个频繁的数据处理。它是6个选项卡上3000x60个单元格的网格,所以循环起来可能需要一段时间。测试任务是找到值>5并突出显示它们。
由于各种原因,条件格式不是一个选项。
for循环很明显,我对此持开放态度,但我希望提高速度。
替换看起来更快。我想尝试Selection.Replace What:=">5“,但它查找的是字符串,而不是我真正想要的不等式。
发布于 2019-06-26 21:53:49
也许这是一种有趣的方法?
Sub Highlight()
Dim WS As Worksheet
For Each WS In ThisWorkbook.Worksheets
For X = 1 To 60
On Error Resume Next
With Intersect(WS.UsedRange, WS.Columns(X))
.AutoFilter 1, ">5"
.Offset(1).Resize(.Rows.Count - 1).Interior.Color = vbYellow
.AutoFilter
End With
On Error GoTo 0
Next X
Next WS
End Sub显然,还有很大的改进空间(例如,屏幕更新和计算),但你应该明白这一点。我不知道它是不是更快:)。至少你不会循环所有的单元格。


发布于 2019-06-26 20:42:21
尝试:
Sub Highlight()
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim row As Long, col As Long, ws As Variant
For Each ws In Worksheets
For row = 1 To 3000
For col = 1 To 60
If ws.Cells(row, col).Value > 5 Then ws.Cells(row, col).Interior.ColorIndex = 4 'light green
Next
Next
Next
Application.ScreenUpdating = True
Application.EnableEvents = True
End Subhttps://stackoverflow.com/questions/56772914
复制相似问题