保留重复值的第一个值 VBA
时间: 2024-09-29 08:09:17 浏览: 34
VBA (Visual Basic for Applications) 是一种宏语言,用于Microsoft Office应用程序,包括Excel等。如果你想要在VBA中保留列表中的重复值,但只显示每个重复值的第一个实例,你可以使用数组或者集合,并配合循环来实现。
1. **基于数组的方式**:
```vba
Sub RemoveDuplicatesKeepFirst()
Dim originalRange As Range, tempArray() As Variant
Set originalRange = Selection '假设选中的范围包含数据
ReDim tempArray(1 To originalRange.Rows.Count)
For i = 1 To originalRange.Rows.Count
If Not IsError(Application.Match(originalRange.Cells(i, 1).Value, tempArray, 0)) Then
'如果单元格值已存在于数组中,则跳过
Continue For
End If
tempArray(i) = originalRange.Cells(i, 1).Value '否则添加到数组
Next i
'将非重复值复制回原范围
originalRange.ClearContents
For Each val In tempArray
originalRange.Cells(originalRange.Cells.Count, 1).End(xlUp).Offset(1, 0).Value = val
Next val
End Sub
```
这个例子中,我们遍历原始范围,如果遇到的值已经在临时数组`tempArray`中,则跳过;否则,将该值添加到数组并清空原范围,然后逐个填入新值。
2. **基于集合的方式**:
```vba
Sub RemoveDuplicatesKeepFirstColl()
Dim originalRange As Range, coll As New Collection
Set originalRange = Selection
For Each cell In originalRange
If Not coll.Contains(cell.Value) Then
coll.Add cell.Value
cell.Offset(0, -1).Clear '清除重复值
End If
Next cell
End Sub
```
这里,我们创建了一个集合`coll`,如果找到的新值不在集合中,就加入并删除当前单元格的前一列。
阅读全文