본문 바로가기
■ 칼퇴를 위한 VBA : 사례/- VBA for 엑셀

VBA로 엑셀 데이터 필터링 및 정렬 자동화하기

by 포탈메이커 2023. 7. 30.

VBA로 엑셀 데이터 필터링 및 정렬 자동화하기

Microsoft Excel은 강력한 데이터 처리 기능을 제공하는 프로그램으로, 많은 사람들이 일상적으로 사용하고 있습니다. Excel에서 데이터를 필터링하고 정렬하는 작업은 자주 수행되는 루틴 작업 중 하나입니다. 이러한 작업을 자동화하면 시간을 절약할 수 있으며, 더 나은 작업 생산성을 얻을 수 있습니다.

이번 포스팅에서는 VBA를 사용하여 엑셀 데이터 필터링 및 정렬 작업을 자동화하는 방법에 대해 알아보겠습니다.

 

칼퇴키트, 업무용 도구모음

칼퇴를 위해 꼭 필요한 도구 모음을 제공합니다. 당장의 업무에 필요한 순간 사용하는 가벼운 메모장, 계산기, 변환기 등

portalmaker.backtohome.kr

 

1. 필터링 자동화하기

VBA를 사용하여 Excel에서 데이터를 필터링하는 방법을 알아보겠습니다. 필터링은 특정 조건을 충족하는 데이터를 표시하고 나머지 데이터를 숨기는 기능입니다.

1-1. 필터 적용하기

VBA를 사용하여 필터를 적용하려면 먼저 데이터를 포함하고 있는 범위를 찾아야 합니다. 이러한 범위는 Range 개체로 나타냅니다.

Sub ApplyFilter()
    Dim ws As Worksheet
    Dim rng As Range

    Set ws = ThisWorkbook.Worksheets("Sheet1") ' 필터를 적용할 워크시트 선택
    Set rng = ws.Range("A1:D10") ' 필터를 적용할 범위 선택 (예: A1부터 D10까지)

    rng.AutoFilter ' 필터 적용
End Sub

위의 코드에서는 ThisWorkbook.Worksheets("Sheet1") 코드를 사용하여 "Sheet1"이라는 이름의 워크시트를 선택한 후, ws.Range("A1:D10") 코드를 사용하여 데이터를 포함한 범위를 선택합니다. rng.AutoFilter 코드를 사용하여 선택한 범위에 필터를 적용합니다.

1-2. 필터 조건 설정하기

필터 조건을 설정하여 데이터를 필터링하는 방법을 알아보겠습니다. 예를 들어, "Department" 열에서 "Sales"만 표시하려면 아래와 같이 코드를 작성할 수 있습니다.

Sub ApplyFilter()
    Dim ws As Worksheet
    Dim rng As Range

    Set ws = ThisWorkbook.Worksheets("Sheet1")
    Set rng = ws.Range("A1:D10")

    rng.AutoFilter Field:=3, Criteria1:="Sales" ' "Department" 열에서 "Sales" 필터 조건 설정
End Sub

rng.AutoFilter Field:=3, Criteria1:="Sales" 코드에서 Field:=3은 "Department" 열을 의미하며, Criteria1:="Sales"는 "Sales" 값만 표시되도록 하는 필터 조건을 의미합니다.


2. 정렬 자동화하기

VBA를 사용하여 Excel에서 데이터를 정렬하는 방법에 대해 알아보겠습니다. 정렬은 데이터를 특정 열을 기준으로 오름차순이나 내림차순으로 재배열하는 기능입니다.

2-1. 열 기준으로 정렬하기

VBA를 사용하여 열을 기준으로 데이터를 정렬하는 방법을 알아보겠습니다. 예를 들어, "Salary" 열을 기준으로 오름차순으로 정렬하려면 아래와 같이 코드를 작성할 수 있습니다.

Sub SortColumn()
    Dim ws As Worksheet
    Dim rng As Range

    Set ws = ThisWorkbook.Worksheets("Sheet1")
    Set rng = ws.Range("A1:D10")

    rng.Sort Key1:=ws.Range("C1"), Order1:=xlAscending ' "Salary" 열을 오름차순으로 정렬
End Sub

rng.Sort Key1:=ws.Range("C1"), Order1:=xlAscending 코드에서 Key1:=ws.Range("C1")은 "Salary" 열을 기준으로 정렬하며, Order1:=xlAscending은 오름차순으로 정렬하는 것을 의미합니다.

2-2. 여러 열 기준으로 정렬하기

VBA를 사용하여 여러 열을 기준으로 데이터를 정렬하는 방법을 알아보겠습니다. 예를 들어, "Department" 열을 먼저 기준으로 정렬한 후, "Salary" 열을 기준으로 정렬하려면 아래와 같이 코드를 작성할 수 있습니다.

Sub SortMultipleColumns()
    Dim ws As Worksheet
    Dim rng As Range

    Set ws = ThisWorkbook.Worksheets("Sheet1")
    Set rng = ws.Range("A1:D10")

    With rng.Sort
        .SortFields.Clear
        .SortFields.Add Key:=ws.Range("C1"), Order:=xlAscending ' "Department" 열을 오름차순으로 정렬
        .SortFields.Add Key:=ws.Range("D1"), Order:=xlAscending ' "Salary" 열을 오름차순으로 정렬
        .SetRange rng
        .Header = xlYes
        .Apply
    End With
End Sub

With rng.Sort 코드를 사용하여 정렬 옵션을 설정하고, 각 열에 대한 정렬 조건을 .SortFields.Add 코드를 사용하여 설정합니다. 정렬 조건을 추가한 후, .SetRange rng 코드를 사용하여 정렬할 범위를 선택하고, .Header = xlYes 코드를 사용하여 첫 번째 행이 헤더인지 여부를 지정합니다. 마지막으로 .Apply 코드를 사용하여 정렬을 적용합니다.


3. 마치며

Excel에서 데이터를 필터링하고 정렬하는 작업은 많은 시간과 노력을 요구합니다. 그러나 VBA를 사용하여 이러한 작업을 자동화할 수 있습니다. 이러한 자동화를 통해 작업 생산성을 향상시키고, 더 나은 결과를 얻을 수 있습니다. 위에서 소개한 필터링 및 정렬 자동화 방법을 활용하여 엑셀 데이터 작업을 효율적으로 처리해보세요.

 

이상으로 VBA로 엑셀 데이터 필터링 및 정렬 자동화에 대한 내용을 알아보았습니다. VBA를 활용하여 엑셀 작업을 자동화하면 시간을 절약할 수 있으며, 더 나은 작업 생산성을 경험할 수 있습니다. 감사합니다!



포스팅이 도움이 되셨다면 구독, 공감, 댓글 부탁드려요!

행복한 하루 되세요!