Блог им. SciFi
' Склеивает сделки Sub mergeDeals() ' Объявление переменных Dim LastRow, prevRow As Long Dim i As Long, j As Long Dim myRange As String ' Выделяем Лист, с которым работаем Sheets("Лист1").Select ' Определяем число заполненных строк With Worksheets("Лист1") LastRow = .Cells(.rows.Count, "A").End(xlUp).Row End With ' Проходимся по всем строкам от 1 до последней For i = 1 To LastRow With Worksheets("Лист1") ' Если строка четная, то копируем ее и вставляем рядом с предыдущей строкой If i Mod 2 = 0 Then prevRow = i - 1 myRange = "A" & i & ":" & "G" & i .Range(myRange).Copy Destination:=Worksheets("Лист1").Range("H" & prevRow) ' Удаляем содержимое скопированной строки .rows(i).ClearContents End If End With Next i End Sub ' Удаляет пустые строки Sub clearEmptyRows() ' Объявление переменных Dim r As Range, rows As Long, i As Long ' Объявление диапазона, в котором ищем пустые строки Set r = ActiveSheet.Range("A1:Z500") ' Удаление пустых строк rows = r.rows.Count For i = rows To 1 Step (-1) If WorksheetFunction.CountA(r.rows(i)) = 0 Then r.rows(i).Delete Next End Sub
Для этого обычно пишется скриптик объединяющий сделки по времени (+- несколько секунд).