VBA使用不相等替换

时间:2019-06-26 12:32:06

标签: excel vba performance loops replace

对于必须为Excel VBA的客户端,我经常进行数据处理。它是6个标签上的3000x60的单元格网格,因此可能需要一段时间才能循环播放。测试任务是找到值>5并突出显示它们。

出于各种原因,不能选择条件格式。

一个for循环很明显,对此我很乐意,但是我正在寻找提高速度的方法。

替换似乎更快。我想尝试Selection.Replace What:=“> 5”,但那不是我真正想要的不等式。

2 个答案:

答案 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

显然有很多改进的余地(例如屏幕更新和计算),但是您应该明白这一点。我不知道它是否更快:)。至少您不会循环所有单元格。

enter image description here

enter image description here

答案 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