Удалить строки в Excel, где присутствуют дубликаты - PullRequest
0 голосов
/ 02 марта 2019

Предположим, у меня есть лист Excel с 3 столбцами: имя, возраст и номер.Имена A, B и C. Возраст 10,11 и 12. И Number 5,7 и 5. В столбце Number в третьем ряду есть дублирующее значение 5, которое уже присутствует в первом ряду.Мне нужен метод, чтобы удалить строку, где присутствует дублирующее значение.Просто сохраните первый ряд в случае дублирования значений.Это означает способ удаления записи C с сохранением записи A.

Это всего лишь небольшой сценарий, который мне нужен для обработки больших данных.

Ответы [ 4 ]

0 голосов
/ 04 марта 2019

Вы можете попробовать:

Option Explicit

Sub test()

    Dim Lastrow As Long, Times As Long, i As Long
    Dim rng As Range
    Dim str As String

    With ThisWorkbook.Worksheets("Sheet1")
        'Find the last row of column A
        Lastrow = .Cells(.Rows.Count, "C").End(xlUp).Row

        'Start Loop from the lastrow to row 1 upside down
        For i = Lastrow To 2 Step -1
            'Give value to str
            str = .Range("C" & i).Value
            'Set the range you want to search
            Set rng = .Range("C2:C" & Lastrow)
            'Count how many times str appears in rng
            Times = Application.WorksheetFunction.CountIf(rng, str)
            'If it is appears more than one time and A & i value equal to C
            If Times > 1 And .Range("A" & i).Value = "C" Then
                .Rows(i).EntireRow.Delete
            End If

        Next i

    End With

End Sub
0 голосов
/ 03 марта 2019

Jaskunwar, похоже, вы не пробовали, иначе вы могли бы найти n решений, так как проблема выглядит очень простой.Если ваш вопрос - что-то еще, пожалуйста, опишите.

Как Алекс предложил удалить Дубликат решит вашу проблему.Вы можете использовать условное форматирование, Pivot, If формула для достижения этой цели.

0 голосов
/ 04 марта 2019

А как насчет этого?(выберите необходимый диапазон)

    Sub SpotUniques()

    Set WorkRng = Application.Selection
    Set WorkRng = Application.InputBox("Select range", xTitleId, WorkRng.address, Type:=8)
    WorkRng.Select

    With CreateObject("Scripting.Dictionary")

    For Each cell In WorkRng 
    .Item(cell.Value) = .Item(cell.Value) + 1
    If .Item(cell.Value) = 1 Then
    With cell.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .Color = RGB(255, 102, 0)
    End With
    End If
    Next cell
    End With
    End Sub
0 голосов
/ 02 марта 2019

На вкладке «Данные» есть стандартная кнопка ленты в Excel, которая называется «Удалить дубликаты».Это должно делать именно то, что вы хотите: https://www.excel -easy.com / examples / remove-duplicates.html

...