VBA怎么按行来提取不重复数据,复制到另一个工作表?

如题所述

以下是VBA按行提取不重复数据并将其复制到另一个工作表的代码示例:
```
Sub ExtractUniqueData()
Dim wsSrc As Worksheet, wsDest As Worksheet
Dim lastRow As Long
Dim dict As Object, rng As Range, cell As Range

'设置源工作表和目标工作表
Set wsSrc = ThisWorkbook.Worksheets("Sheet1")
Set wsDest = ThisWorkbook.Worksheets("Sheet2")

'确定源工作表最后一行的行号
lastRow = wsSrc.Cells(wsSrc.Rows.Count, 1).End(xlUp).Row

'定义创建字典对象
Set dict = CreateObject("Scripting.Dictionary")
dict.CompareMode = vbTextComp
are '不区分大小写比较键值

'遍历源工作表每一行,将不重复的数据添加到字典中
For Each rng In wsSrc.Range("A1:A" & lastRow)
If Not IsEmpty(rng) Then
For Each cell In rng.Cells
If Not dict.exists(cell.Value) Then
dict.Item(cell.Value) = ""
End If
Next cell
End If
Next rng

'将字典中的不重复数据复制到目标工作表中
wsDest.Range("A1:A" & dict.Count) = Application.Transpose(dict.keys)
End Sub
```
在此示例中,我们假设源工作表中待提取数据所在的列为"A"列。首先,我们从工作簿中
获取源工作表和目标工作表的对象。然后,使用`End(xlUp)`方法确定源工作表中最后一行的行号。接下来,我们创建一个字典对象,然后遍历源工作表的每一行,将不重复的数据添加到字典中。
在添加完所有不重复的数据后,我们可以将字典中的键值(即不重复的数据)复制到目标工作表的"A"列中。请注意,由于数组需要水平排列而字典中的键值是垂直排列,所以我们使用`Application.Transpose`函数将它们转换为水平排列后再复制到目标工作表中。
温馨提示:答案为网友推荐,仅供参考