Я пытаюсь создать макрос, который автоматизирует отчет. Проблема в том, что исходные данные приносят данные, которые нам не нужны, а сам отчет выполняет множество вычислений на основе таблицы в целом. На основе таблицы выполняются сотни вычислений, поэтому добавление параметра включения в каждую формулу в отчете займет непомерно много времени.
Это легко обойти, обновляя отчет вручную, используя фильтр, отфильтровывая данные и удаляя соответствующие данные. Однако я пытаюсь автоматизировать файл, чтобы мы могли просто нажать кнопку и обновить его, не тратя на это 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