Автофильтр с именем листа и Удалить скрытые строки - PullRequest
0 голосов
/ 09 апреля 2019

Я хочу удалить данные из Excel на основе фильтра. фильтровать данные на основе имени листа с указанным столбцом ex col A и удалять скрытое значение.

мое намерение хранить данные на основе имени листа, я пробовал с циклом, но обработка занимает много времени.

wb.Activate
wb.Sheets("PMCC 1").Select
For Each ws In wb.Worksheets
    ws.Activate
    index = index + 1
    If index <= 10 Then
        irow = ws.Cells(Rows.Count, 1).End(xlUp).Row

        newtemp = Replace(ws.Name, " ", "#0")
        For J = irow To 2 Step -1
            If ws.Cells(J, 1) <> newtemp Then
                ws.Cells(J, 1).EntireRow.Delete
            End If
        Next J
    Else
        irow = ws.Cells(Rows.Count, 1).End(xlUp).Row

        newtemp = Replace(ws.Name, " ", "#")
        For J = irow To 2 Step -1
            If ws.Cells(J, 1) <> newtemp Then
                ws.Cells(J, 1).EntireRow.Delete
            End If
        Next J
    End If

Next ws

MsgBox ("Deleted")

1 Ответ

0 голосов
/ 09 апреля 2019

Вы можете изменить и попробовать это решение:

Option Explicit

Sub test()

    Dim ws As Worksheet
    Dim LastRow As Long, Index As Long, j As Long
    Dim newtemp As String

    For Each ws In ThisWorkbook.Worksheets

        Index = Index + 1

        With ws

            If Index <= 10 Then

                newtemp = Replace(.Name, " ", "#0")
            Else
                newtemp = Replace(.Name, " ", "#")

            End If

            LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

                For j = LastRow To 2 Step -1

                    If .Cells(j, 1) <> newtemp Then
                        .Rows(j).EntireRow.Delete
                    End If

                Next j

        End With

    Next ws

    MsgBox ("Deleted")

End Sub
...