对于必须为Excel VBA的客户端,我经常进行数据处理。它是6个标签上的3000x60的单元格网格,因此可能需要一段时间才能循环播放。测试任务是找到值>5
并突出显示它们。
出于各种原因,不能选择条件格式。
一个for循环很明显,对此我很乐意,但是我正在寻找提高速度的方法。
替换似乎更快。我想尝试Selection.Replace What:=“> 5”,但那不是我真正想要的不等式。
答案 0 :(得分:4)
也许这是一个有趣的approuch?
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
显然有很多改进的余地(例如屏幕更新和计算),但是您应该明白这一点。我不知道它是否更快:)。至少您不会循环所有单元格。
答案 1 :(得分:1)
尝试:
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 Sub