【问题描述】VBA如何删除重复值?
【小千解答】可以使用以下3种方法:
方法1:Range.RemoveDuplicates方法
方法说明:
代码如下:
Sub xqoffice() Range("A:A").Copy Range("C1") Range("C:C").RemoveDuplicates 1, xlYes End Sub
注意事项:
1、Excel2007及以上版本才支持RemoveDuplicates方法。
2、工作表处于筛选状态,有数据行被过滤隐藏的情况,会影响程序的运行结果。
方法2:借助字典
代码如下:
Sub xqoffice2() Dim Arr Dim i As Integer Dim xqDic As Object Set xqDic = CreateObject("scripting.dictionary") Arr = Range("A1").CurrentRegion.Value For i = 1 To UBound(Arr) xqDic(Arr(i, 1)) = "" Next i Range("C1:C" & xqDic.Count).Value = Application.WorksheetFunction.Transpose(xqDic.keys) Erase Arr Set xqDic = Nothing End Sub
方法3:Filter函数和动态数组
Filter函数语法:
代码如下:
Sub xqoffice3() Dim Arr, Rst, ArTmp Dim i As Integer Dim N As Integer Arr = Range("A1").CurrentRegion.Value ReDim Rst(1 To 1) Rst(1) = Arr(1, 1) N = 1 For i = 1 To UBound(Arr) ArTmp = Filter(Rst, Arr(i, 1)) If UBound(ArTmp) < 0 Then N = N + 1 ReDim Preserve Rst(1 To N) Rst(N) = Arr(i, 1) End If Next i Range("C1:C" & N).Value = Application.WorksheetFunction.Transpose(Rst) Erase Arr Erase Rst End Sub