返回列表 上一主題 發帖

VBA尋找重複

回復 1# Qin

Rept+1.rar (446.33 KB)

快一些些(程序test2),字典物件也就這樣了,期待有更好的寫法

程序test1=原程序+計時器

話說...."笭葩" 是什麼意思?
  1. Private Sub test2()
  2.     t1 = Timer
  3.     Application.ScreenUpdating = False
  4.     Dim arr As Range, brr()
  5.     Dim i As Long, Rn As Long
  6.     Dim Dict As Object
  7.     On Error Resume Next
  8.     Set Dict = CreateObject("scripting.dictionary")
  9.     With ActiveSheet
  10.        Set arr = Intersect(.UsedRange, .Columns(3))
  11.        Rn = arr.Cells.Count
  12.         ReDim brr(1 To Rn)
  13.         For i = 1 To Rn
  14.           Dict(arr(i).Value) = Dict(arr(i).Value) + 1
  15.         Next i
  16.         For i = 1 To Rn
  17.             If Dict(arr(i).Value) <> 1 Then brr(i) = "重覆"
  18.         Next i
  19.         .Columns(2) = ""
  20.         .Range("b1").Resize(Rn, 1) = Application.Transpose(brr)
  21.     End With
  22.     Application.ScreenUpdating = True
  23.     MsgBox "test2共耗時" & Round(Timer - t1, 3) & "秒"
  24. End Sub
複製代碼

TOP

回復 6# 准提部林


準大太厲害啦,原來字典物件輸入的key是字串型態的話,速度可以提昇那麼多!!!

如果是非字串,速度整個慢下來!   

另外用字典記錄上一個重覆的列號並且一起輸入"重覆"的寫法也很棒,可以只用一個迴圈

TOP

        靜思自在 : 人生沒有所有權,只有生命的使用權。
返回列表 上一主題