【问题标题】:optimize find duplicate values for data set in excess of 200,000优化查找超过 200,000 个数据集的重复值
【发布时间】:2020-09-24 16:21:23
【问题描述】:

我是编码新手,需要关于无法完成的代码的帮助。我怀疑这是由于数据集的大小。我使用简化的数据集测试了代码,它处理得很好。但是,我的实际数据集超过 210,000 行,预计还会增长。
有没有办法加快这个速度?感谢您的帮助

Sub DupValidation()
    Dim wb As Workbook
    Dim ws1 As Worksheet

    Dim i As Long
    Dim lastrow As Long
    Dim lastrow2 As Long

    Set wb = ActiveWorkbook
    Set ws1 = wb.Worksheets("Tickets")

    lastrow = ws1.Cells(Rows.Count, 1).End(xlUp).Row

    ws1.Range("g2:g" & lastrow).ClearContents

    i = 2
    Do While i <= lastrow
        If Application.CountIf(ws1.Range(ws1.Cells(2, 2), ws1.Cells(lastrow, 2)), ws1.Cells(i, 2)) > 1 Then
            ws1.Cells(i, 7).Value = True
        End If
        i = i + 1
    Loop
End Sub

【问题讨论】:

  • 看看在内存中使用 Variant 数组可能会这样做。
  • 嗨,欢迎来到 SO,这可能是Code Review 的一个更适合的问题
  • 大本。我是一个完整的新手。你能解释一下你建议的 Variant 数组吗?谢谢

标签: vba optimization duplicates


【解决方案1】:

可能会更好

Sub Check_Duplicates_Using_Evaluate()
    With Range("B2", Range("B" & Rows.Count).End(xlUp))
        .Offset(, 5).Value = .Parent.Evaluate("IF(COUNTIF(" & .Address & "," & .Address & ")>1,""True"","""")")
    End With
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 2013-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多