Приветствую. Появилась новая задача.
Нужно создать пустой лист (Что нужно) и скопировать на него данные из исходного листа (Что есть).
Скопировать нужно только те строки, в которых в столбце "Url" не пусто.
[вложение удалено администратором]
Макрос работает с листом "Что есть". Имя листа указано в макросе в пункте 1.
Макрос
Sub макрос()
Dim sh_src As Worksheet, sh_res As Worksheet
Dim arr(), lr As Long, i As Long
' Отключение монитора, чтобы ускорить макрос.
Application.ScreenUpdating = False
'1. Присваиваем исходному листу имя "sh_src" для удобства написания и чтения кода.
' Далее в коде можно обращаться к листу по имени "sh_src".
Set sh_src = Worksheets("Что есть")
'2. Создание копии исходного листа.
sh_src.Copy After:=sh_src
'3. Присваиваем копии имя "sh_res".
Set sh_res = ActiveSheet
'4. Копируем столбец E в массив. С массивом макрос быстрее работает, чем с эксель-ячейками.
' Поиск последней строки. End не работает со скрытыми строками.
' Поиск по столбцу "A", т.к. в нём во всех строках есть данные.
lr = sh_res.Cells(sh_res.Rows.Count, "A").End(xlUp).Row
' Копирование столбца E в массив.
arr() = sh_res.Range("E1:E" & lr).Value
'5. Удаление строк, у которых пусто в столбце E.
For i = UBound(arr, 1) To 2 Step -1
If arr(i, 1) = "" Then
sh_res.Rows(i).Delete
End If
Next i
' Включение монитора.
Application.ScreenUpdating = True
End Sub
Если на исходном листе периодически появляются данные и нужно видеть строки, у которых не пусто в столбце "Url", то может быть подойдёт решение с помощью "Power Query": https://forumvba.ru/index.php?topic=774.new#new