'建立字典,把對象賦予dictionary,(等於判斷依據)
Set dic = CreateObject("scripting.dictionary")
'從A列最後一列開始進行篩選: step -1
'如果是從第一列開始會有刪除跳行情況,無法達成刪除重複效果
For i = Range("A65536").End(3).Row To 1 Step -1
'如果A欄數據已經存在字典中(等於重複了)則執行THEN
If dic.exists(Cells(i, "A").Value) Then
'刪除該列
Rows(i).Delete
Else
'若A欄數據未存於字典內,則將其加入字典
dic(Cells(i, "A").Value) = ""
End If
Next i
Sub tt()
Dim xD, Arr, i&, j%, N&
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([工作表1!U1], [工作表1!A65536].End(3))
For i = 1 To UBound(Arr)
If Not xD.Exists(Arr(i, 1)) Then
N = N + 1
xD(Arr(i, 1)) = N
For j = 1 To UBound(Arr, 2)
Arr(N, j) = Arr(i, j)
Next
End If
Next
Range("A1").Resize(UBound(Arr), UBound(Arr, 2)) = ""
Range("A1").Resize(N, UBound(Arr, 2)) = Arr
End Sub作者: quickfixer 時間: 2020-12-9 16:59
Dim dr As String
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.EnableEvents = False
Sheets("工作表1").Select
Range("A2").Select
Set dic = CreateObject("scripting.dictionary")
For i = Range("A2000").End(3).Row To 1 Step -1
If dic.exists(Cells(i, "A").Value) Then
dr = dr & i & ":" & i & ","
Else
dic(Cells(i, "A").Value) = ""
End If
Next i
dr = Left(dr, Len(dr) - 1)
Range(dr).Delete Shift:=xlUp
Sub tt()
Dim xD, Arr, i&, j%, N&
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([步驟一!V1], [步驟一!A65536].End(3))
For i = UBound(Arr) To 1 Step -1
If Not xD.Exists(Arr(i, 1)) Then
N = N + 1
xD(Arr(i, 1)) = N
For j = UBound(Arr, 1) To 1
Arr(N, j) = Arr(i, j)
Next
End If
Next
Range("A1").Resize(UBound(Arr), UBound(Arr, 1)) = ""
Range("A1").Resize(N, UBound(Arr, 1)) = Arr
End Sub作者: lilizzzz 時間: 2020-12-10 08:15
Sub tt()
Dim xD, Arr, i&, j%, N& '
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([工作表1!U1], [工作表1!A65536].End(3)) '原資料裝入數組
For i = 1 To UBound(Arr)
If Not xD.exists(Arr(i, 1)) Then
N = N + 1 '計算不重複唯一值的次數
xD(Arr(i, 1)) = N '不重複唯一值的裝入字典
For j = 1 To UBound(Arr, 2) '將唯一值的其它欄位的值裝入數組
Arr(N, j) = Arr(i, j)
Next
End If
Next
Range("A1").Resize(UBound(Arr), UBound(Arr, 2)) = "" '清除原資料
Range("A1").Resize(N, UBound(Arr, 2)) = Arr '貼上唯一值相關的值
End Sub作者: samwang 時間: 2020-12-10 09:21
Dim dr As Range
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.EnableEvents = False
Sheets("工作表1").Select
Range("A2").Select
Set dic = CreateObject("scripting.dictionary")
For i = Range("A2000").End(3).Row To 1 Step -1
If dic.exists(Cells(i, "A").Value) Then
If dr Is Nothing Then
Set dr = Rows(i)
Else
Set dr = Union(dr, Rows(i))
End If
Else
dic(Cells(i, "A").Value) = ""
End If
Next i
dr.EntireRow.Delete
Set dr = Nothing
Set dic = Nothing
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
Application.EnableEvents = True