Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2301|回复: 1

[已解决]删除表格里所相同的行

[复制链接]
发表于 2014-12-22 15:36 | 显示全部楼层 |阅读模式
请编写代码
  1、工作表2有4个表格(或者有更多表格),删除里面大于等于2个相同的行,保留不相同的行。相同的行已用背景色标注,删除结果放到工作表3中,
2、删除结果如工作表4
最佳答案
2014-12-22 18:28
Private Sub CommandButton1_Click()
    Dim A, B, C, d, i%, j%, k%, s1, t, s2
    A = Sheets(2).UsedRange
    ReDim B(1 To UBound(A), 1 To UBound(A, 2))
    Set d = CreateObject("scripting.dictionary")
    For k = 1 To UBound(A, 2) Step 11
        '字典录入
        d.RemoveAll
        For i = 1 To UBound(A)
            t = ""
            For j = k To k + 9
                t = t & "," & A(i, j)
            Next j
            d(t) = d(t) + 1
        Next i
        '给输出数组B赋值
        s1 = 0
        For Each t In d.keys
            If d(t) = 1 Then
                s1 = s1 + 1: s2 = 0
                C = Split(t, ",")
                For j = k To k + 9
                    s2 = s2 + 1
                    B(s1, j) = C(s2)
                Next j
            End If
        Next
    Next k
    Sheets(3).UsedRange = ""
    Sheets(3).Range("a1").Resize(UBound(B), UBound(B, 2)) = B
End Sub
删除表格里所相同的行2.rar (28.81 KB, 下载次数: 6)

删除表格里所相同的行.rar

16.71 KB, 下载次数: 9

发表于 2014-12-22 18:28 | 显示全部楼层    本楼为最佳答案   
Private Sub CommandButton1_Click()
    Dim A, B, C, d, i%, j%, k%, s1, t, s2
    A = Sheets(2).UsedRange
    ReDim B(1 To UBound(A), 1 To UBound(A, 2))
    Set d = CreateObject("scripting.dictionary")
    For k = 1 To UBound(A, 2) Step 11
        '字典录入
        d.RemoveAll
        For i = 1 To UBound(A)
            t = ""
            For j = k To k + 9
                t = t & "," & A(i, j)
            Next j
            d(t) = d(t) + 1
        Next i
        '给输出数组B赋值
        s1 = 0
        For Each t In d.keys
            If d(t) = 1 Then
                s1 = s1 + 1: s2 = 0
                C = Split(t, ",")
                For j = k To k + 9
                    s2 = s2 + 1
                    B(s1, j) = C(s2)
                Next j
            End If
        Next
    Next k
    Sheets(3).UsedRange = ""
    Sheets(3).Range("a1").Resize(UBound(B), UBound(B, 2)) = B
End Sub
删除表格里所相同的行2.rar (28.81 KB, 下载次数: 6)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 13:31 , Processed in 0.284232 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表