ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3723|回复: 44

[求助] 查找代码求斧正、提速

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-2-23 12:39 | 显示全部楼层 |阅读模式
各位老师:打搅午休,恳请斧正俺附件里的代码且使之提速(现有代码用于十万行以上就很卡),谢谢!

查找代码求斧正.rar

29.38 KB, 下载次数: 31

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-23 15:40 | 显示全部楼层
本帖最后由 wowo000 于 2023-2-23 15:42 编辑

各位老师:俺就本贴求助补充一下,即:“计费”表里的红色字体内容,C列着黄色起初是没有的。
先清空“计费”表里的红色字体内容,清除C列着黄色,然后用代码一气呵成未清理之前的红色字体内容及C列是副单号着黄色效果(也就是附件里现有代码运行出来的效果)。有劳哪位老师帮忙,多谢!!!

TA的精华主题

TA的得分主题

发表于 2023-2-23 12:42 | 显示全部楼层
本帖最后由 smiletwo 于 2023-2-23 12:44 编辑

          用字典吧,查找效率高点。但涉及单元格标色,快不了太多

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-23 12:50 | 显示全部楼层
smiletwo 发表于 2023-2-23 12:42
用字典吧,查找效率高点。但涉及单元格标色,快不了太多

smiletwo老师:辛苦您给整整??谢谢!

TA的精华主题

TA的得分主题

发表于 2023-2-23 13:06 | 显示全部楼层
可以这样不?
Sub 查号匹对()
    Dim Arr, Brr, x&, i&, R&, irow, Rng As Range
    Sheets("计费").[J5:M9999] = Empty
    Arr = Sheets("计费").Range("A5:M" & Sheets("计费").Range("C" & Rows.Count).End(xlUp).Row)
    Brr = Sheets("系统数据").UsedRange
    Tim = Timer
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual
    For x = 1 To UBound(Arr)
        For i = 2 To UBound(Brr)
            If InStr(Brr(i, 13), Arr(x, 3)) Then
                Arr(x, 2) = Brr(i, 1)
                Arr(x, 5) = Brr(i, 5)
                Arr(x, 12) = Brr(i, 13)
                Arr(x, 13) = Brr(i, 2)
                If Rng Is Nothing Then
                    Set Rng = Sheets("计费").Range("c" & x + 4)
                Else
                    Set Rng = Union(Rng, Sheets("计费").Range("c" & x + 4))
                End If
            End If
        Next
    Next
    Sheets("计费").Range("A5").Resize(UBound(Arr), 13) = Arr
    Rng.Interior.Color = 65535
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    MsgBox Format(Timer - Tim, "0.00")
End Sub

TA的精华主题

TA的得分主题

发表于 2023-2-23 13:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
image.png

已知条件在两列内查询.7z

25.3 KB, 下载次数: 13

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-2-23 14:03 | 显示全部楼层
Option Explicit
Sub 查号匹对1()
    Dim strs As String, ar
    Dim Arr, Brr, x&, i&, R&, irow, j&
    Dim ilastrow&, sht As Worksheet
    Dim dic As Object
    Dim Tim As Single
    Dim rng As Range
    Tim = Timer
    Set dic = CreateObject("scripting.dictionary")
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Set sht = Sheets("计费")
    With sht
        ilastrow = .Cells.Find("*", Cells(1, 1), xlValues, xlWhole, xlByRows, xlPrevious).Row
        .[J5:M9999] = Empty
        Arr = .Range("A5:M" & ilastrow)
    End With
    For i = 1 To UBound(Arr)
        dic(Arr(i, 3)) = i
    Next
    Brr = Sheets("系统数据").UsedRange
    For i = 2 To UBound(Brr)
        If dic.exists(Brr(i, 2)) Then
            x = dic(Brr(i, 2))
            Arr(x, 2) = Brr(i, 1)
            Arr(x, 5) = Brr(i, 5)
            Arr(x, 12) = Brr(i, 13)
        End If
        If Len(Brr(i, 13)) Then
            ar = Split(Brr(i, 13), ",")
            For j = 0 To UBound(ar)
                If Len(ar(j)) And dic.exists(ar(j)) Then
                    x = dic(ar(j))
                    Arr(x, 12) = Brr(i, 13)
                    Arr(x, 13) = Brr(i, 2)
                    strs = strs & x + 4 & ","
                    'Exit For
                End If
            Next
        End If
    Next
    With sht
        .Range("A5").Resize(UBound(Arr), 13) = Arr
        strs = Left(strs, Len(strs) - 1)
        ar = Split(strs, ",")
        For i = 0 To UBound(ar)
            If rng Is Nothing Then
                Set rng = .Cells(ar(i), 3)
            Else
                Set rng = Union(rng, .Cells(ar(i), 3))
            End If
        Next
        If Not rng Is Nothing Then rng.Interior.Color = RGB(255, 255, 0)
    End With
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    MsgBox Format(Timer - Tim, "0.00")
End Sub

TA的精华主题

TA的得分主题

发表于 2023-2-23 14:06 | 显示全部楼层
看一下   应快一点

副本已知条件在两列内查询.zip

32.52 KB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2023-2-23 14:16 | 显示全部楼层
本帖最后由 smiletwo 于 2023-2-23 14:17 编辑
wowo000 发表于 2023-2-23 12:50
smiletwo老师:辛苦您给整整??谢谢!

image.png

image.png
image.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-23 14:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼上各位老师:今日鲜花冇了,改天奉上,谢谢各位的帮助!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-23 14:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

smiletwo老师:这句 arr(i, 12) = brr(m, 13)提示越界??有劳修正,谢谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 00:38 , Processed in 0.039217 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表