2016-01-13 90 views
0

我有一个电子表格有成千上万的行,在B列有许多重复,然后在G列有那一行的各自的价值。我需要从列B中删除重复项,但留在具有最高值的行中(即最大列G)。有没有办法通过VBA自动执行此操作,因为它需要在许多场合完成?删除给定行的值重复VBA

感谢

+2

录制宏:基于G列中的数据进行排序,然后使用删除重复。如果排序正确,删除重复函数将仅保留最高值。 – vacip

+2

在列G上按降序排序。然后突出显示整个数据集并转到数据>删除重复项。只选择B列。它将删除B列中的所有重复项,并在每列中留下最高值。G –

+0

@vacip击败我6秒 –

回答

0

你可以试试这个:

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