Я еще не проверял это ни с какими данными, но вы можете адаптировать что-то вроде этого
Option Explicit
Sub test()
Dim DataArr() As Variant
Dim BusDates() As Variant
Dim PasteArr() As Variant
Dim LastRow As Long
Dim Cell1 As Variant
Dim Cell2 As Variant
Dim index As Long
Dim Matched As Boolean
Dim subcount As Long
LastRow = Worksheets("stacks").Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
DataArr() = Worksheets("stacks").Range("F2:K" & Worksheets("stacks").Cells(Rows.Count, "F").End(xlUp).Row).Value
BusDates() = Worksheets("stacks").Range("M3:M" & LastRow).Value
ReDim PasteArr(1 To 1, 1 To 6)
subcount = 1
For Cell1 = 1 To UBound(DataArr(), 1)
For Each Cell2 In BusDates()
If DataArr(Cell1, 1) Like Cell2 Then
Matched = True
Exit For 'if it matches it will exit
ElseIf Cell2 Like BusDates(UBound(BusDates), 1) Then 'if it gets to the end, it's truly unique and needs to be added
For index = 1 To 6
PasteArr(subcount, index) = DataArr(Cell1, index)
Next index
subcount = subcount + 1
PasteArr = Application.Transpose(PasteArr)
ReDim Preserve PasteArr(1 To 6, 1 To subcount)
PasteArr = Application.Transpose(PasteArr)
Matched = False
End If
Next Cell2
If Matched = False Then
BusDates = Application.Transpose(BusDates)
ReDim Preserve BusDates(1 To UBound(BusDates) + 1)
BusDates = Application.Transpose(BusDates)
BusDates(UBound(BusDates), 1) = DataArr(Cell1, 1)
End If
Next Cell1
Worksheets("stacks").Range("M" & LastRow + 1 & ":" & Cells(LastRow + UBound(PasteArr, 1) - 1, 18).Address).Value = PasteArr
End Sub
Вам нужно два цикла for, чтобы вы могли перебирать каждую дату в массиве данныхи сравните его с каждой датой в столбце М, чтобы убедиться, что она действительно уникальна.Выход для немного ускоряет его, пропуская остальные сравнения, когда он получает совпадение.
РЕДАКТИРОВАТЬ: Я немного протестировал и внес некоторые изменения, но это, кажется, работает.Стоит отметить, что LastRow
испортится, если ваши данные не имеют квадратной или прямоугольной формы, потому что это может привести к добавлению нулевого символа или чего-то еще в массив сравнения, и вы получите несоответствие типов при сравнении Cell2