首页 > 编程知识 正文

Excel去重复名,EXCEL去重复值函数

时间:2023-05-04 22:16:52 阅读:271436 作者:2734


http://club.excelhome.net/thread-888978-2-1.html


以下是楼主的方法1:

Sub 矩形1_Click()
    i = Range("A65536").End(xlUp).Row
    For s = 1 To i
        For ss = i To s + 1 Step -1
            If Cells(ss, 1) = Cells(s, 1) Then
            Cells(ss, 1).Delete shift:=xlUp
            End If
        Next ss
    Next s
End Sub 复制代码

感觉与我常用的数组去重是一样的(我是通过两层循环判断比较,重复的清为空值,但是我的做法中,对于后面遇到的空值会跳过,提高运行效率,楼主的,在最后几个单元格会无意义的跑空……),不过,巧妙的是利用了单元格删除后,后面单元格自动上移一格的特点,在内存数组中相当于是把元素前赶了一个位置,如此,不需要另行清除空值了……




楼主方法二:

Sub 矩形2_Click()
    i = Range("A65536").End(xlUp).Row
    For s = i To 1 Step -1
        If Application.WorksheetFunction.CountIf(Range(Cells(1, 1), Cells(s, 1)), Cells(s, 1)) > 1 Then
            Cells(s, 1).Delete shift:=xlUp
        End If
    Next
End Sub 复制代码 函数思维,巧妙利用了单元格删除上移,只需要一个从下往上的单层循环即可,没有跑空……但是每次操作单元格,尤其在循环内部,是效率低的原因吧……


楼主方法三:

Sub 矩形3_Click()
    i = Range("A65536").End(xlUp).Row
    Dim dic As Object, ii&, arr, ra
    Set dic = CreateObject("Scripting.Dictionary")
    arr = Range("a1:a" & i)
    For ii = 1 To UBound(arr)
        ra = dic(arr(ii, 1))
    Next
    Range("a:a").ClearContents
    Range("a1").Resize(dic.Count, 1) = Application.Transpose(dic.Keys)
End Sub 复制代码



楼主方法四: Sub 矩形4_Click()
Columns(1).RemoveDuplicates 1
End Sub 复制代码 咋一看,吓一跳,如此简洁,赶紧F1,才稍稍明白了些真相:
“Excel 开发人员参考
Range.RemoveDuplicates 方法
从值区域中删除重复的值。
版本信息
已添加版本:  Excel 2007

语法

表达式.RemoveDuplicates(Columns, Header)

表达式   一个代表 Range 对象的变量。

参数

名称 必选/可选 数据类型 说明
Columns 可选 Variant 包含重复信息的列的索引数组。如果没有传递任何内容,则假定所有列都包含重复信息。
Header 可选 XlYesNoGuess 指定第一行是否包含标题信息。xlNo 是默认值;如果希望 Excel 确定标题,则指定 xlGuess。


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。