Excel表格中使用VBA代码去重数据

数据源,如图1-1所示
Excel表格中使用VBA代码去重数据_第1张图片
如图1-2所示,通过几种方式去重后得到的效果,具体代码请看后面代码
Excel表格中使用VBA代码去重数据_第2张图片

1.借助辅助项去重

Sub 借助辅助列去重()
Range("a2:a21").Copy [D1]  '将[a2:a21]数据复制粘贴到D列
[D:D].RemoveDuplicates Columns:=1 '对D列数据请将去重操作
End Sub

2.使用数组方式直接去重

Sub 数组去重()
On Error Resume Next
Dim arr1()
arr = Range("A2:A21")
ReDim arr1(1 To UBound(arr))
For i = LBound(arr) To UBound(arr)    'LBound和UBound 分别是数组的下限和上限
    n = WorksheetFunction.Match(arr(i, 1), arr1, 0)
    If n = "" Then
        x = x + 1
        arr1(x) = arr(i, 1)
    End If
    n = ""
Next i
'上面代码已经得到结果,后面的代码作用就是将结果展现,可以不要'
For j = 1 To UBound(arr1)
Debug.Print arr1(j) '这一步可以将数据在立即窗口展示
Range("E" & j + 1) = arr1(j)'这步骤将数组内容依次放到E列,'
Next j
MsgBox Join(arr1) '使用Msgbox信息框将数组内容展示,其中jion函数是将arr1数组中的字符串依次合并连接'
End Sub

3.使用字典去重

Sub 字典去重1()
On Error Resume Next
'Dim dic1 As New dictionary 如果要是使用这段代码的话  需要前期绑定,否则使用后面一条代码实现后期绑定
Set dic1 = CreateObject("scripting.dictionary") 
arr1 = Range("A2:A21")
For i = 1 To UBound(arr1)
    dic1.Add arr1(i, 1), ""
Next i
tem = dic1.keys
'上面代码已经得到结果,后面的代码作用就是将结果展现,可以不要'
For j = 0 To UBound(tem)
Debug.Print tem(j) '这一步可以将数据在立即窗口展示
Range("F" & j + 2) = tem(j) '这步骤将数组内容依次放到E列,'
Next j
End Sub
Sub 字典去重2()
'Dim dic1 As New dictionary 如果要是使用这段代码的话  需要前期绑定,否则使用后面一条代码实现后期绑定
Set dic1 = CreateObject("scripting.dictionary") 
arr1 = Range("A2:A21")
For i = 1 To UBound(arr1)
    dic1(arr1(i, 1)) = "" '对关键字的条目进行修改,如果字典没有该关键字,则写入,否则就修改关键字条目
Next i
tem = dic1.keys
'上面代码已经得到结果,后面的代码作用就是将结果展现,可以不要'
For j = 0 To UBound(tem)
Debug.Print tem(j) '这一步可以将数据在立即窗口展示
Range("G" & j + 2) = tem(j) '这步骤将数组内容依次放到E列,'
Next j
End Sub

你可能感兴趣的:(Excel,excel,vba)