|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
在EXCEL数据统计中,有时候需要去除重复数据行。在此分享一下我的一个笨办法。
- Sub 去重()
- Dim arr(), brr(), crr()
- Dim i, j, k, l
-
- On Error Resume Next
-
- arr = Sheet1.Cells(1, 1).CurrentRegion.Value '将工作表1中的原始数据赋给arr数组
- ReDim brr(1 To UBound(arr), 1 To 3) '定义brr数组,比arr多一列
- rs = UBound(arr) '取数组arr的最后一行
-
- For i = 1 To rs
- brr(i, 1) = arr(i, 1): brr(i, 2) = arr(i, 2): brr(i, 3) = 0 '将arr数组赋给brr,第3列作为判断重复列,赋初始值0
- Next
-
- For i = 2 To rs
- For j = i + 1 To rs
- If brr(j, 1) = brr(i, 1) And brr(j, 2) = brr(i, 2) Then brr(j, 3) = 1 '从第3行开始brr中出现和重复行时,判断重复列赋值为1
- Next
- Next
-
- k = 0
- For i = 2 To rs
- If brr(i, 3) = 1 Then k = k + 1 '统计重复数据行数
- Next
-
- ReDim crr(1 To rs - k, 1 To 2) '定义crr数据
- l = 1
- For i = 1 To rs
- If brr(i, 3) = 0 Then
- crr(l, 1) = brr(i, 1): crr(l, 2) = brr(i, 2) '将不重复数据赋值给crr数据
- l = l + 1
- End If
- Next
-
- Sheet2.Cells(1, 1).Resize(UBound(crr), 2) = crr '在表2中写出原始数据中所有不重复的数据
- End Sub
复制代码
当然还有一个简便办法。
- Sub 去重1()
- arr = Sheet1.Cells(1, 1).CurrentRegion.Value '将工作表1中的原始数据赋给arr数组
- Sheet3.Cells(1, 1).Resize(UBound(arr), 2) = arr '在表3中重新写出原始数据
- Sheet3.Range("A1:B" & UBound(arr)).RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
- End Sub
复制代码 我总觉得我的笨办法还能更简化一些,可是就是不知道该如何精简。请各位大神指正。
|
评分
-
1
查看全部评分
-
|