Sub Макрос1()
Dim LastRow As Long, i As Long, j As Long, x As Long, ArrMain(), ArrArtikul(), ArrNew, Artikul As String, ArrArhiv
t = Timer
LastRow = Cells(Rows.Count, 19).End(xlUp).Row
ArrArtikul = Range(Cells(2, 19), Cells(LastRow, 19)).Value
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
ArrMain = Range(Cells(2, 1), Cells(LastRow, 18)).Value
ReDim ArrArhiv(1 To UBound(ArrArtikul), 1 To 17)
For j = 1 To UBound(ArrArtikul)
Artikul = ArrArtikul(j, 1)
For i = 1 To UBound(ArrMain)
If ArrMain(i, 9) = Artikul Then
x = x + 1
ArrMain(i, 18) = True
ArrArhiv(x, 1) = ArrMain(i, 1)
ArrArhiv(x, 2) = ArrMain(i, 2)
ArrArhiv(x, 3) = ArrMain(i, 3)
ArrArhiv(x, 4) = ArrMain(i, 4)
ArrArhiv(x, 5) = ArrMain(i, 5)
ArrArhiv(x, 6) = ArrMain(i, 6)
ArrArhiv(x, 7) = ArrMain(i, 7)
ArrArhiv(x, 8) = ArrMain(i, 8)
ArrArhiv(x, 9) = ArrMain(i, 9)
ArrArhiv(x, 10) = ArrMain(i, 10)
ArrArhiv(x, 11) = ArrMain(i, 11)
ArrArhiv(x, 12) = ArrMain(i, 12)
ArrArhiv(x, 13) = ArrMain(i, 13)
ArrArhiv(x, 14) = ArrMain(i, 14)
ArrArhiv(x, 15) = ArrMain(i, 15)
ArrArhiv(x, 16) = ArrMain(i, 16)
ArrArhiv(x, 17) = ArrMain(i, 17)
End If
Next
Next
ReDim ArrNew(1 To UBound(ArrMain), 1 To 17)
For i = 1 To UBound(ArrMain)
If ArrMain(i, 18) <> True Then
x = x + 1
ArrMain(i, 18) = True
ArrNew(x, 1) = ArrMain(i, 1)
ArrNew(x, 2) = ArrMain(i, 2)
ArrNew(x, 3) = ArrMain(i, 3)
ArrNew(x, 4) = ArrMain(i, 4)
ArrNew(x, 5) = ArrMain(i, 5)
ArrNew(x, 6) = ArrMain(i, 6)
ArrNew(x, 7) = ArrMain(i, 7)
ArrNew(x, 8) = ArrMain(i, 8)
ArrNew(x, 9) = ArrMain(i, 9)
ArrNew(x, 10) = ArrMain(i, 10)
ArrNew(x, 11) = ArrMain(i, 11)
ArrNew(x, 12) = ArrMain(i, 12)
ArrNew(x, 13) = ArrMain(i, 13)
ArrNew(x, 14) = ArrMain(i, 14)
ArrNew(x, 15) = ArrMain(i, 15)
ArrNew(x, 16) = ArrMain(i, 16)
ArrNew(x, 17) = ArrMain(i, 17)
End If
Next
Range(Cells(2, 1), Cells(LastRow + 1, 17)).ClearContents
Cells(2, 1).Resize(x, 17).Value = ArrNew
With Sheets("Архив БД")
LastRow = .Cells(Rows.Count, 1).End(xlUp).Row
Range(.Cells(2, 1), .Cells(LastRow + 1, 17)).ClearContents
.Cells(2, 1).Resize(UBound(ArrArhiv), 17).Value = ArrArhiv
End With
Debug.Print Timer - t
End Sub
|