Как суммировать и удалять дубликаты на 2 столбца - PullRequest
0 голосов
/ 07 октября 2019

Application Match для одного столбца работает, но для 2 столбцов выдает ошибку

With Sht
    LastRow = .Cells(.Rows.Count, "J").End(xlUp).Row

    For i = LastRow To 2 Step -1
        DupRow = Application.Match(Cells(i, 9).Value, Range(Cells(1, 9), Cells(i - 1, 9)), 0)
        DoEvents

        If Not IsError(DupRow) Then
            Cells(i, 8).Value = Cells(i, 8).Value + Cells(DupRow, 8).Value
            Cells(i, 9).Value = Cells(i, 9).Value + Cells(DupRow, 9).Value
            Rows(DupRow).Delete

        End If
    Next i
End With

для 2 столбцов Ошибка выполнения 1004

DupRow = Application.Match(Cells(i, 4).Value & Cells(i, 5).Value, Range(Cells(1, 4) & Cells(1, 5), Cells(i - 1, 4) & Cells(i - 1, 5)), 0)

Как правильно это сделать?

1 Ответ

0 голосов
/ 07 октября 2019

На мой взгляд, для этого лучше использовать словарь, который имеет встроенный метод управления ключами, поэтому его можно использовать для получения уникальных значений:

Sub teest()
    Dim val As String
    Set dict = CreateObject("Scripting.Dictionary")

    LastRow = Cells(Rows.Count, "A").End(xlUp).Row

    For i = LastRow To 2 Step -1
        val = Cells(i, 1).Value & Cells(i, 2).Value
        If dict.Exists(val) Then
            Rows(i).Delete
        Else
            dict.Add val, 0
        End If
    Next
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...