Фильтрация данных как часть макроса VBA

Фильтрация данных как часть макроса VBA

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

Это легко обойти, обновляя отчет вручную, используя фильтр, отфильтровывая данные и удаляя соответствующие данные. Однако я пытаюсь автоматизировать файл, чтобы мы могли просто нажать кнопку и обновить его, не тратя на это 20-30 минут.

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

Это часть более крупного макроса, который обновляет данные, корректирует столбец дат с помощью функции «Текст в столбцах», удаляет раздел данных, вычисляет формулы в таблице KPI, а затем сохраняет их как дату этой недели.

Я могу автоматизировать все остальные шаги, так как я уже создал несколько макросов для обновления других отчетов, но это поставило меня в тупик! Мой Google-Fu тоже меня подвел.

решение1

Эта подпрограмма удаляет всю строку(и) листа, когда значение, определенное переменнойСтрунанаходится в столбце, определяемом переменнойколонка

Sub deleterows()
    Dim a As Application
    Dim wkb As Workbook
    Dim wks As Worksheet
    Dim DataRange As Range
    Set a = Application
    Set wkb = ThisWorkbook
    Set wks = wkb.ActiveSheet
    wks.Application.ScreenUpdating = False
    thecolumn = 2 'this have to be changed to the desired column
    thestring = "some text" ' this have to be changed too
    reviewing = True
    visitrow = 1
    While reviewing = True
        visitrow = visitrow + 1
        If wks.Cells(visitrow, 1) = "" Then
            reviewing = False
        End If
        celldata = wks.Cells(visitrow, thecolumn)
        If IsNumeric(celldata) = True Then
            celldata = Trim(Str(celldata))
        End If
        If celldata = thestring Then
            wks.Rows(visitrow).Delete
            visitrow = visitrow - 1
        End If
    Wend
   wks.Application.ScreenUpdating = True
   Message = MsgBox("Finished!", vbOKOnly)
End Sub

Связанный контент