首页 > 解决方案 > 根据第三张纸中的某些条件将数据从一张纸复制到另一张纸?当我运行此代码时,Excel 有时会崩溃

问题描述

我目前正在处理 3 个文件:新文件 (Sht)- 在其中编写了宏,另外两个是 wsSource 和 wsDest。新文件中大约有 1000 行,wsSource 中大约有 1000 行。LastRowAT 是新文件的最后一行。LastRowKS 是 wsDest 的最后一行。代码匹配特定条件,然后根据这些条件,将数据从 wsSource 复制到 wsDest。现在,因为我使用的是 for 循环和嵌套的 if,所以有时 excel 会崩溃并且必须重新启动。我可以以任何方式优化这段代码,以减少运行时间,更重要的是不会崩溃吗?PS这只是样本数据。实际数据将涉及 wsSource 文件中的大约 100,000 行

For i = 2 To LastRowAT
    If sht.Range("B" & i).Value = "Khusbhu Singh" And sht.Range("D" & i).Value = "Allocated" And sht.Range("C" & i).Value = Max_date Then
        If sht.Range("A" & i).Value = Workbooks("CISF.xlsx").Worksheets("QUIDAM-INSURERS").Range("A" & i).Value Then
            Set rngCopy = wsSource.Range("A" & i & ":V" & i)
            rngCopy.Copy wsDest.Cells(LastRowKS, "I")
            wsDest.Cells(LastRowKS, "I").Resize( _
            rngCopy.Rows.Count, rngCopy.Columns.Count).Value = rngCopy.Value
            wsDest.Range("A" & LastRowKS).Value = "Khusbhu Singh"
            wsDest.Range("B" & LastRowKS).Value = Max_date
            LastRowKS = LastRowKS + 1
        End If
    End If
Next i

标签: vba

解决方案


推荐阅读