VBA 매크로의 일부로 데이터 필터링


0

보고서를 자동화하는 매크로를 만들려고합니다. 문제는 원본 데이터가 필요하지 않은 데이터를 가져오고 보고서 자체가 테이블 전체를 기반으로 많은 계산을 수행한다는 것입니다. 표를 기반으로 수백 가지 계산이 수행되므로 보고서의 각 수식에 포함 매개 변수를 추가하는 것은 엄청난 시간이 걸릴 것입니다.

이 방법은 보고서를 수동으로 업데이트 할 때, 필터를 사용하여, 데이터를 필터링하고 관련 데이터를 삭제함으로써 쉽게 해결됩니다. 그러나 파일을 자동화하려고하는데, 버튼을 클릭하고 20-30 분을 소비하지 않고 새로 고칠 수 있습니다.

따라서 내가하고 싶은,하지만 지금까지 작동하지 못했습니다 VBA 열을 특정 문자열이 들어있는 모든 행을 삭제할 수 있습니다.

이것은 데이터를 업데이트하고, 텍스트를 열로 사용하여 날짜 열을 수정하고, 데이터 섹션을 삭제하고, KPI 시트에서 수식을 계산 한 다음 이번 주 날짜로 저장하는 더 큰 매크로의 일부입니다.

다른 여러 단계를 자동화 할 수 있습니다. 다른 보고서를 업데이트하기 위해 여러 매크로를 이미 만들었으므로이 단계를 자동화 할 수는 있지만, 저에게 난처한 상황입니다. My Google-Fu도 나에게 실패했습니다.


너 뭐 해봤 니? 어디서 잘못 되었나요? 행을 전혀 삭제할 수 있었습니까? 코드를 공유하면 수행 한 작업을 볼 수 있습니다.
Dave

솔직히 말해 데이브 (Dave)는 더 이상 어디서부터 시작해야할지 몰라! if 문을 만든 다음 행을 삭제할 수 있음을 이해합니다. 그러나 정확한 방법에 관해서는 나는 곤란하다.
Miller86

답변:


1

이 하위 변수는 변수로 정의 된 값이 시트의 전체 행을 삭제합니다. Thestring 변수에 의해 정의 된 열에있다. 칼럼

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

우수, 고마워요 @ jcbermu - 많이 감사드립니다 :) 내가 코드를 올바르게 이해한다면 이것이 제대로 작동하는 것처럼 보입니다. 나중에 매크로를 완전히 작성해야 할 때 사용해 보겠습니다.
Miller86
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.