보고서를 자동화하는 매크로를 만들려고 합니다. 문제는 원본 데이터가 필요하지 않은 데이터를 가져오고 보고서 자체가 테이블 전체를 기반으로 많은 계산을 수행한다는 것입니다. 테이블을 기반으로 수백 개의 계산이 수행되므로 보고서의 각 수식에 포함 매개변수를 추가하는 데 엄청난 시간이 걸립니다.
이는 필터를 사용하고, 데이터를 필터링하고, 관련 데이터를 삭제하여 보고서를 수동으로 업데이트할 때 쉽게 해결할 수 있습니다. 하지만 파일을 자동화하려고 하므로 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