首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用不等式替换VBA

使用不等式替换VBA
EN

Stack Overflow用户
提问于 2019-06-26 20:32:06
回答 2查看 94关注 0票数 4

对于必须是Excel VBA的客户端,我有一个频繁的数据处理。它是6个选项卡上3000x60个单元格的网格,所以循环起来可能需要一段时间。测试任务是找到值>5并突出显示它们。

由于各种原因,条件格式不是一个选项。

for循环很明显,我对此持开放态度,但我希望提高速度。

替换看起来更快。我想尝试Selection.Replace What:=">5“,但它查找的是字符串,而不是我真正想要的不等式。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-26 21:53:49

也许这是一种有趣的方法?

代码语言:javascript
复制
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

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

票数 4
EN

Stack Overflow用户

发布于 2019-06-26 20:42:21

尝试:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56772914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档