如何使用宏 vba 从特定列中删除重复行
How to remove duplicate rows from specific column using macro vba
我对如何删除 excel 中特定列具有相同值的行有疑问。
我的问题请看下面的截图:
行4: FullName: A
SeqNo:003
在行 5: FullName: A
SeqNo:003
所以行 4 和 5 具有相同的值所以我想删除其中一个但我不想删除行 automatically
由 random
但状况良好只有 latest date will remain.
条件是这样的:
这应该是正确的输出:
那么如何通过宏vba实现呢?
提前致谢!
记录下您按日期列从新到旧排序的宏,然后在三列上使用删除重复项功能,但在删除重复项对话框中取消选中日期列。默认情况下 Excel 保留第一个重复项,因此通过排序您将删除具有较旧日期的行。
你应该可以自己整理记录的代码。
试试这个。
Sub test()
Dim vDB, vR()
Dim X As New Collection
Dim Str As String
Dim i As Long, j As Long, r As Long, c As Integer
Dim n As Long
vDB = Range("a1").CurrentRegion
r = UBound(vDB, 1)
c = UBound(vDB, 2)
On Error Resume Next
For i = 1 To r
Str = vDB(i, 1) & vDB(i, 4)
Err.Clear
X.Add Str, Str
If Err.Number = 0 Then
n = n + 1
ReDim Preserve vR(1 To c, 1 To n)
For j = 1 To c
vR(j, n) = vDB(i, j)
Next j
End If
Next i
For i = 1 To n
For j = 1 To r
If vDB(j, 1) = vR(1, i) And vDB(j, 4) = vR(4, i) Then
If vDB(j, 5) >= vR(5, i) Then
vR(2, i) = vDB(j, 2)
vR(5, i) = vDB(j, 5)
End If
End If
Next j
Next i
Sheets.Add
Range("a1").Resize(n, c) = WorksheetFunction.Transpose(vR)
End Sub
我对如何删除 excel 中特定列具有相同值的行有疑问。
我的问题请看下面的截图:
行4: FullName: A
SeqNo:003
在行 5: FullName: A
SeqNo:003
所以行 4 和 5 具有相同的值所以我想删除其中一个但我不想删除行 automatically
由 random
但状况良好只有 latest date will remain.
条件是这样的:
这应该是正确的输出:
那么如何通过宏vba实现呢?
提前致谢!
记录下您按日期列从新到旧排序的宏,然后在三列上使用删除重复项功能,但在删除重复项对话框中取消选中日期列。默认情况下 Excel 保留第一个重复项,因此通过排序您将删除具有较旧日期的行。
你应该可以自己整理记录的代码。
试试这个。
Sub test()
Dim vDB, vR()
Dim X As New Collection
Dim Str As String
Dim i As Long, j As Long, r As Long, c As Integer
Dim n As Long
vDB = Range("a1").CurrentRegion
r = UBound(vDB, 1)
c = UBound(vDB, 2)
On Error Resume Next
For i = 1 To r
Str = vDB(i, 1) & vDB(i, 4)
Err.Clear
X.Add Str, Str
If Err.Number = 0 Then
n = n + 1
ReDim Preserve vR(1 To c, 1 To n)
For j = 1 To c
vR(j, n) = vDB(i, j)
Next j
End If
Next i
For i = 1 To n
For j = 1 To r
If vDB(j, 1) = vR(1, i) And vDB(j, 4) = vR(4, i) Then
If vDB(j, 5) >= vR(5, i) Then
vR(2, i) = vDB(j, 2)
vR(5, i) = vDB(j, 5)
End If
End If
Next j
Next i
Sheets.Add
Range("a1").Resize(n, c) = WorksheetFunction.Transpose(vR)
End Sub