Я искал в интернете решение этой проблемы.
У меня есть списки, которые должны совпадать и должны сравниваться на взаимной основе. Мне нужно сравнить около 5 разных переменных в каждой строке, а затем с помощью функции MATCH идентифицировать первую подходящую строку, которая затем удаляется. Затем я буду перебирать список, пока не останутся записи, которые не были удалены. Причина, по которой мне нужно удалить, заключается в том, что в каждом списке может быть несколько совпадений, но если в одном списке 3, а в другом - 4, мне потребуется 4-я (дополнительная) запись для идентификации.
Пожалуйста, критикуйте код, который у меня есть ниже, мне еще предстоит создать цикл, так как я думаю, что это будет легко, как только я получу функцию MATCH для точной работы. Стандартная формула CSE работает на листе, но мне нужен VBA для возможности зацикливания. Спасибо.
Я пытаюсь проверить значение RowDelete с помощью msgbox и возвращаю ошибку времени выполнения 13: «несоответствие типов». Я также попытался использовать окно WATCH, чтобы увидеть, какой результат передан, но сама формула, похоже, не работает.
РЕДАКТИРОВАТЬ: Этот код возвращает ошибку во время выполнения «13»: несоответствие типов. Я не могу решить это. Я просто хотел бы знать, что я могу сделать, чтобы передать формулу результат, который я могу использовать (в данном случае первый результат - строка 62). После этого я смогу сделать все самостоятельно.
Sub DeleteMatches2()
Dim Ws As Worksheet
Dim Direction As String
Dim OrderType As String
Dim Amount As String
Dim CCY As String
Dim Rate As String
Dim RowCt As Long
Dim Formula As Integer
Dim iRow As Long
Dim colNum As Integer
Dim RowDelete As Long
Set Ws = Sheets("KOOLTRA RAW")
With Ws
RowCt = .Cells(.Rows.Count, 11).End(xlUp).Row - 1
For iRow = 2 To RowCt
Direction = .Cells(iRow, "K").Value
OrderType = .Cells(iRow, "L").Value
Amount = .Cells(iRow, "M").Value
CCY = .Cells(iRow, "N").Value
Rate = .Cells(iRow, "P").Value
Formula = Evaluate("MATCH(1,(""" & OrderType & """ = B:B)*(""" & Direction & """ = C:C)*(""" & Amount & """ = D:D)*(""" & CCY & """ = E:E)*(""" & Rate & """ = H:H),0)")
MsgBox Formula
Exit For
Next iRow
End With
End Sub