Эта пользовательская функция должна работать, чтобы увидеть, соответствует ли одна строка диапазону строк, проходя по каждому столбцу. Если они совпадают, будет возвращено True
или False
, если что-то отличается.
Обратите внимание, что количество столбцов должно быть одинаковым, поэтому, вероятно, лучше всего включать всю строку. Функция учитывает конечные диапазоны, поэтому она не должна слишком сильно влиять на производительность.
Exit Function
означает, по сути, отсутствие совпадения (False
).
Возможно, есть некоторые условия я Я не думаю о (я учел пробелы), но, надеюсь, вы поняли идею. Если у кого-то есть более оптимальный подход, мне было бы интересно посмотреть.
Function checkifRowexists(rowToCheck As Range, RngToCheck) As Boolean
Dim c As Long
If rowToCheck.Columns.Count = RngToCheck.Columns.Count Then
For c = 1 To rowToCheck.Columns.Count
If VBA.IsError(Application.Match(rowToCheck.Cells(1, c).Value, RngToCheck.Columns(c), 0)) Then
If IsEmpty(rowToCheck.Cells(1, c)) Then
If Application.WorksheetFunction.CountBlank(RngToCheck.Columns(c)) = 0 Then
Exit Function
End If
Else
Exit Function
End If
End If
If Intersect(rowToCheck.Worksheet.UsedRange, rowToCheck.Cells(1, c)) Is Nothing And _
Intersect(RngToCheck.Worksheet.UsedRange, RngToCheck.Columns(c)) Is Nothing Then
Exit For
End If
Next c
checkifRowexists = True
End If
End Function