Макросом
Sub Сравнить()
Dim y As Long
Dim r As Range
'Задаём ячейку на листе новая, в которую будем вносить.
With Sheets("новая")
Set r = .Cells(.Rows.Count, 1).End(xlUp).Cells(2, 1)
End With
With Sheets("старая") 'На листе старая
y = .Cells(.Rows.Count, 1).End(xlUp).Row 'ищем номер последней строки
If y < 3 Then Exit Sub 'Если строк мало, выходим из макроса
With .Range(.Cells(1, "H"), .Cells(y, "H")) 'в столбец H
.FormulaR1C1 = "=COUNTIFS(новая!C1,C1,новая!C2,C2,новая!C4,C4,новая!C5,C5,новая!C6,C6,новая!C7,C7)" 'вписываем формулу, считающую, сколько раз встречается строка
.Calculate 'вычисляем внесённую формулу. На случай, если вычисления отключены.
Dim arr As Variant
arr = .Cells 'Результат запоминаем в массив
End With
Dim brr As Variant
For y = 2 To UBound(arr, 1) 'Перебираем строки полученного массива
If arr(y, 1) = 0 Then 'Если значение 0, если строки нет на листе новая
brr = .Cells(y, 1).Resize(1, 7) 'Запоминаем первые 7 столбцов в массив
r.Resize(UBound(brr, 1), UBound(brr, 2)) = brr 'В ячейку на листе новая вносим массив.
r.Cells(1, UBound(brr, 2) + 1).Value = "Удалена" 'Справа дописываем новая.
Set r = r.Cells(2, 1) 'Сдвигаем ячейку, в которую будем вставлять данные.
End If
Next
End With
End Sub
|