Страницы: 1
RSS
Удаление строк с 0 значением в ячейках определенного столбца во всех листах., нужен макрос на удаление строк с 0 значение в ячейке во всех листах
 
добрый день, народ!
очень нужна помощь. нужен макрос на удаление строк с 0 значением в ячейках столбца F во всех листах сразу. листы с одинаковой формой, диапазон тоже везде одинаков A7:F42.
проблема в том, что в оригинальном файле таких листов 500 шт. и вручную это перебирать уйдёт куча времени. во вложении пример листов, оставил 5 шт.
 
Добрый вечер. Пробуйте:
Код
Sub DeleteRowsValue0()
    Dim WSH As Worksheet, i As Long
    Application.ScreenUpdating = False
    For Each WSH In ActiveWorkbook.Sheets
        For i = 42 To 7 Step -1
            If WSH.Cells(i, 6).Value = 0 Then
                WSH.Cells(i, 6).EntireRow.Delete
            End If
        Next i
    Next WSH
End Sub
 
Код
Sub ff()
Dim ws As Worksheet
    For Each ws In Application.Worksheets
        ws.Activate
            For i = 42 To 7 Step -1
                If Range("F" & i) = 0 Then
            Rows(i).Delete
        End If
    Next
Next
End Sub
 
Цитата
DANIKOLA написал:
Добрый вечер. Пробуйте:Код
спасибо большое!
а код захватывает в том числе скрытые листы? есть возможность исключить один лист. как скрытый или по названию? называется "Заказ".
прошу прощение, что не прописал сразу про него, вылетело из головы(
Изменено: Харт - 25.02.2022 07:44:45 (корректировка цитирования)
 
Цитата
Ham13 написал:
Код
тоже подходит. спасибо!
остался только вопрос с исключением одного листа.
Изменено: Харт - 25.02.2022 07:45:22
 
Вариант:
Код
Option Explicit

Sub курочка_ряба()
    Dim ws As Object
    On Error Resume Next
    For Each ws In Worksheets
        With ws
            If .Name <> "Заказ" Then
            'If .Visible Then
                With .Range("A6:F42")
                    .AutoFilter Field:=6, Criteria1:="0"
                    With .Offset(1, 0).Resize(.Rows.Count - 1)
                        .SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp
                    End With
                    If Err.Number <> 0 Then Err.Clear
                    .AutoFilter
                End With
            End If
        End With
    Next
End Sub
 
If Range("F" & i) = 0 and ws.Name <> "Лист 1" Then
 
Цитата
ocet p написал:
Вариант:
идеальный вариант. огромное спасибо, выручили!
Изменено: Харт - 25.02.2022 07:44:05 (корректировка цитирования)
 
Арт Харт,  цитата - не бездумное копирование. Приведите в порядок свои сообщения
Страницы: 1
Читают тему (гостей: 1)
Наверх