Как я могу сделать этот код более эффективным, чтобы он работал быстрее? - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь скрыть строки, чтобы отображались только данные определенных розничных продавцов, данные не могут быть отфильтрованы из-за формата отчета.Я начинаю с того, что просто отображаю все строки в качестве сброса, а затем вручную скрываю строки, которые не имеют отношения к продавцу, пока не останется только информация о выбранных продавцах.

Однако это медленный способ сделать это, и мне нужнобыстрее, чем я могу понять.Нет критериев для фильтрации данных.Просто имя продавца на кнопке.

Мой код показывает медленный ручной способ сделать это.

Sub SummaryRetailer1Only()

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

'Resets hidden rows by showing everything.
ActiveSheet.Rows("2:480").EntireRow.Hidden = False

'Hides all rows that don't show data for Retailer1.
ActiveSheet.Rows("18:21").EntireRow.Hidden = True
ActiveSheet.Rows("37:48").EntireRow.Hidden = True
ActiveSheet.Rows("54:57").EntireRow.Hidden = True
ActiveSheet.Rows("73:84").EntireRow.Hidden = True
ActiveSheet.Rows("88:129").EntireRow.Hidden = True
ActiveSheet.Rows("261:376").EntireRow.Hidden = True
ActiveSheet.Rows("390:393").EntireRow.Hidden = True
ActiveSheet.Rows("409:420").EntireRow.Hidden = True
ActiveSheet.Rows("424:427").EntireRow.Hidden = True
ActiveSheet.Rows("443:454").EntireRow.Hidden = True

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub

Код работает нормально, я просто хочу способ, который, как я предполагаю, использует некоторые переменныечтобы он работал быстрее.

1 Ответ

1 голос
/ 16 апреля 2019

Другой способ:

Option Explicit

Sub SummaryRetailer1Only()

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    With ThisWorkbook.Worksheets("Sheet1") '<- It s better to create a with statement with the sheet you want to use insead of activesheet

        'Resets hidden rows by showing everything.
        .Rows("2:480").EntireRow.Hidden = False

        'Hides all rows that don't show data for Retailer1.
        Union(.Rows("18:21"), .Rows("37:48"), .Rows("54:57"), .Rows("73:84"), .Rows("88:129"), .Rows("261:376"), _
                .Rows("390:393"), .Rows("409:420"), .Rows("424:427"), .Rows("443:454")).EntireRow.Hidden = True

    End With

    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True

End Sub
...