Excel VBA Макросы: Как удалить строки, в которых в некоторых столбцах пусто?

Автор Mostik, 25 декабря 2017, 10:45

Mostik

Приветствую. Появилась новая задача.
Нужно создать пустой лист (Что нужно) и скопировать на него данные из исходного листа (Что есть).
Скопировать нужно только те строки, в которых в столбце "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