|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
网上抄的代码,不知是否符合要求。
- Sub 数据对比()
- Dim arr, brr, crr
- Dim i, j, n, lastrowA, lastrowB As Integer
- '建立字典对象
- Set d = CreateObject("scripting.dictionary")
- '获取数据区域最后一行的行数
- lastrowA = Sheets("两列数据对比").Cells(Rows.Count, 1).End(xlUp).Row
- lastrowB = Sheets("两列数据对比").Cells(Rows.Count, 2).End(xlUp).Row
- '将数据区域导入数组
- arr = Sheets("两列数据对比").Range("A2:A" & lastrowA)
- brr = Sheets("两列数据对比").Range("B2:B" & lastrowB)
- '重新定义数组crr,数组行数:数组arr+数组brr元素数和,列数:2
- ReDim crr(1 To UBound(arr) + UBound(brr), 1 To 2)
- '循环数组arr,将arr的值赋值给crr的第一列,同时,建立字典,字典的关键字为数组的值,对应的项目给该值对应的位置
- For i = 1 To UBound(arr)
- crr(i, 1) = arr(i, 1)
- d(arr(i, 1)) = i
- Next
- n = UBound(arr)
- '循环数组brr,首先判断br的元素在字典中是否存在,如果存在,那么通过d(brr(j,1))找到这个元素在字典中所在的位置,然后把这个元素赋值给crr该元素所在位置的第二列
- For j = 1 To UBound(brr)
- If d.exists(brr(j, 1)) Then
- crr(d(brr(j, 1)), 2) = brr(j, 1)
- Else
- '如果不存在,那么就写入到crr的n行2列,n的初始值是arr元素的数量,n+1,即第一个不在arr中的brr值写到crr的n+1行,之后每次出现都加一行,依次往下赋值
- n = n + 1
- crr(n, 2) = brr(j, 1)
- End If
- Next
- '将crr的数据赋值到单元格区域
- Sheets("两列数据对比").Range("D2").Resize(n, 2).Value = crr
- End Sub
复制代码
AB两列数据对比.rar
(20.75 KB, 下载次数: 4)
|
|