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

관련 정보