Excel 删除给定行的重复项';s值VBA

Excel 删除给定行的重复项';s值VBA,excel,vba,Excel,Vba,我有一个有数千行的电子表格,在B列中有许多重复项,然后在G列中有该行的相应值。我需要删除B列中的重复项,但保留在具有最高值的行中(即最大G列)。有没有一种方法可以通过VBA实现自动化,因为在很多情况下都需要这样做 谢谢你可以试试这个: Sub test() Dim i As Long, j As Long Dim wb As Workbook, ws As Worksheet Set wb = ThisWorkbook Set ws = wb.Sheets("Sheet1") ' Chang

我有一个有数千行的电子表格,在B列中有许多重复项,然后在G列中有该行的相应值。我需要删除B列中的重复项,但保留在具有最高值的行中(即最大G列)。有没有一种方法可以通过VBA实现自动化,因为在很多情况下都需要这样做

谢谢你可以试试这个:

Sub test()

Dim i As Long, j As Long
Dim wb As Workbook, ws As Worksheet

Set wb = ThisWorkbook
Set ws = wb.Sheets("Sheet1") ' Change the name of your sheet

With ws

i = 1 ' Start at Row 1

 Do While Not IsEmpty(.Cells(i, 2))

j = 1 ' Start at Row 1
    Do While Not IsEmpty(.Cells(j, 2))

    If i <> j Then

        If .Cells(i, 2).Value = Cells(j, 2).Value Then

                If .Cells(i, 7).Value > Cells(j, 7) Then

                    Rows(j).EntireRow.Delete
                    j = j - 1
                Else
                    Rows(i).EntireRow.Delete
                    If i > 1 Then i = i - 1
                    j = 1
                End If
        End If

    End If

    j = j + 1
    Loop

i = i + 1
Loop

End With

End Sub
子测试()
我和我一样长,我和我一样长
将wb设置为工作簿,ws设置为工作表
设置wb=ThisWorkbook
设置ws=wb.Sheets(“Sheet1”)'更改工作表的名称
与ws
i=1'从第1行开始
非空时执行(.Cells(i,2))
j=1'从第1行开始
不为空时执行(.Cells(j,2))
如果我是j那么
如果.Cells(i,2).Value=Cells(j,2).Value则
如果.Cells(i,7).Value>Cells(j,7),则
行(j).EntireRow.Delete
j=j-1
其他的
行(i).EntireRow.Delete
如果i>1,则i=i-1
j=1
如果结束
如果结束
如果结束
j=j+1
环
i=i+1
环
以
端接头

录制宏:根据G列对数据进行排序,然后使用删除重复项。如果排序正确,“删除重复项”功能将只保留最大值。按G列降序排序。然后突出显示整个数据集,然后转到“数据>删除重复项”。仅选择列B。它将删除列B中的所有重复项,并为列中的每个项保留最高值G@vacip以6比6击败我seconds@ScottCraner不过你更彻底:)