You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA嵌套For循环执行过慢求助:匹配两工作表数据并复制值

优化VBA匹配复制代码,提升执行速度

你的嵌套循环方案在数据量较大时会因为O(n*m)的时间复杂度导致执行缓慢,改用字典(Dictionary)存储匹配关系可将时间复杂度降至O(n+m),大幅提升运行效率。以下是优化后的代码:

Sub ccopiazanrfact()
    Dim camion As Worksheet, facturi As Worksheet
    Dim factDict As Object
    Dim lastRowFact As Long, lastRowCamion As Long
    Dim i As Long
    Dim keyVal As Variant, matchVal As Variant
    
    ' 关闭不必要的Excel功能,进一步提速
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual
    
    ' 初始化工作表对象
    Set camion = ThisWorkbook.Sheets("B816RUS")
    Set facturi = ThisWorkbook.Sheets("EVIDENTA FACTURI")
    Set factDict = CreateObject("Scripting.Dictionary") ' 创建字典实例
    
    ' 获取两个工作表的有效数据最后行号
    lastRowFact = facturi.Range("F" & Rows.Count).End(xlUp).Row
    lastRowCamion = camion.Range("E" & Rows.Count).End(xlUp).Row
    
    ' 将「EVIDENTA FACTURI」的F列(匹配键)和A列(目标值)存入字典
    For i = 2 To lastRowFact
        keyVal = facturi.Range("F" & i).Value
        ' 处理重复键:若F列有重复值,保留最后一行对应的A列内容
        If factDict.Exists(keyVal) Then
            factDict(keyVal) = facturi.Range("A" & i).Value
        Else
            factDict.Add keyVal, facturi.Range("A" & i).Value
        End If
    Next i
    
    ' 遍历「B816RUS」的E列,匹配字典并赋值到P列
    For i = 4 To lastRowCamion
        keyVal = camion.Range("E" & i).Value
        If factDict.Exists(keyVal) Then
            camion.Range("P" & i).Value = factDict(keyVal)
        End If
    Next i
    
    ' 恢复Excel默认设置
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
    
    ' 释放对象资源
    Set factDict = Nothing
    Set camion = Nothing
    Set facturi = Nothing
End Sub

优化细节说明

  • 字典的核心优势:字典基于哈希表实现,键值对查找耗时可忽略,对比嵌套循环逐行匹配,数据量越大提速效果越显著。
  • 额外提速配置:关闭屏幕更新、事件触发和自动计算,避免Excel在代码执行过程中做无意义的界面刷新或计算。
  • 重复键处理逻辑:如果「EVIDENTA FACTURI」的F列存在重复值,代码默认保留最后一行对应的A列值,若需保留第一行,删除Else分支外的赋值语句即可。

内容的提问来源于stack exchange,提问作者Jiboc Marius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 19:50:21