[Excel] 엑셀에서 버튼 클릭시 자동 정리 매크로 만들기(VBA초급)

안녕하세요. 오늘도 휴잉의 블로그를 찾아주신 여러분 감사드려요. 오늘 제가 포스팅할 내용은 "엑셀에서 버튼 클릭 시 자동 정리 매크로 만드는 방법"에 대해 포스팅해보려고 해요. 엑셀 데이터를 손으로 하나씩 정리하시는 분들이 계세요. 근데 한 번의 클릭으로 데이터 정리 작업을 자동화할 수 있다면 얼마나 편리할까요? 그래서 이번 포스팅을 통해 엑셀 VBA를 이용해 버튼을 클릭 시 자동으로 데이터가 정리가 실행되는 엑셀 매크로 만드는 방법을 소개해드릴 테니 관심 있게 읽어주시면 감사하겠습니다.

[Excel] 엑셀에서 버튼 클릭시 자동 정리 매크로 만들기(VBA초급)

<엑셀 자동정리 매크로>


이런 분들에게 추천드려요!!
1. 반복적인 데이터 정리가 귀찮은 사무직 종사자
2. 엑셀 매크로를 처음 배우는 직장인
3. VBA 코드 작성에 막 입문한 초보자
4. 단순 작업을 자동화하고 싶은 엑셀 사용자


<엑셀 자동정리 매크로>

사전 준비로 매크로 사용 설정을 해줘야 해요. VBA를 사용하기 위해 먼저 매크로 기능을 활성화해야 하는데, 엑셀을 실행 후 상단의 파일 -> 더 보기 -> 옵션을 클릭해 주세요.


<엑셀 자동정리 매크로>

Excel 옵션 창이 활성화되면 "보안 센터'메뉴를 클릭해 주세요.


<엑셀 자동정리 매크로>

매크로 설정 탭을 클릭 후 "모든 매크로포함"을 체크 및 확인버튼을 클릭하고 엑셀을 다시 시작해 주시면 사전준비가 완료가 돼요.


<엑셀 자동정리 매크로>

자 이제 위와 같은 엑셀 데이터가 있다고 가정해 볼게요. 여기서 정리를 빈셀을 제거하고, 중복제거, 점수기준 내림차순 정렬 등을 적용해보려고 해요.


<엑셀 자동정리 매크로>

이제 키보드에서 Alt + F11을 클릭하여 VBA창을 열고 삽입 -> 모듈을 클릭해 주세요.


<엑셀 자동정리 매크로>



Sub 자동정리()

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' 데이터 범위 지정 (E1부터 시작)
    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, "E"). End(xlUp). Row
    
    ' 기존 필터 및 정렬 제거
    ws.AutoFilterMode = False
    
    ' 데이터 범위 설정
    Dim rng As Range
    Set rng = ws.Range("E1:G" & lastRow)
    
    ' 빈 행 제거
    Dim i As Long
    For i = lastRow To 2 Step -1
        If Application.WorksheetFunction.CountA(ws.Rows(i)) = 0 Then
            ws.Rows(i). Delete
        End If
    Next i
    
    ' 헤더 Bold 처리
    With ws.Range("E1:G1"). Font
        . Bold = True
    End With
    
    ' 정렬 (점수 기준 내림차순)
    rng.Sort Key1:=ws.Range("G2"), Order1:=xlDescending, Header:=xlYes

    ' 테두리 적용
    With rng.Borders
        . LineStyle = xlContinuous
        . Color = vbBlack
        . Weight = xlThin
    End With
    
    MsgBox "자동 정리가 완료되었습니다!", vbInformation

End Sub


위 코드를 입력해 주세요. 위 코드의 각 줄과 블록에 대한 자세한 설명은 아래 메모장을 통해 설명해 둘게요.

코드설명.txt
0.00MB



<엑셀 자동정리 매크로>

이제 엑셀 상단탭에서 개발도구 -> 삽입 -> 컨트롤 선택 후 시트에 드래그하여 삽입해 주세요.



<엑셀 자동저리 매크로>

매크로 지정창이 뜨면 자동정리를 클릭 후 확인버튼을 클릭해 주세요.


<엑셀 자동정리 매크로>

위 사진처럼 버튼이 생겼죠? 버튼을 한번 클릭해 주세요.


<엑셀 자동정리 매크로>

"자동 정리가 완료되었습니다"라고 창이 뜨며 빈셀을 제거가 되고 점수 List가 정렬이 돼요. 깔끔하죠?


<엑셀 자동정리 매크로>

그렇다면 여기서 만약 특정 점수 이상만 필터링하고 싶을 수도 있잖아요? 그럴 때 간단히 VBA코드에 조건문을 추가해서 해당 점수 미만의 행을 삭제할 수도 있어요.
' 점수 기준으로 80점 미만인 행 삭제


For i = lastRow To 2 Step -1
    If IsNumeric(ws.Cells(i, "G"). Value) Then
        If ws.Cells(i, "G").Value < 80 Then
            ws.Rows(i). Delete
        End If
    End If
Next i

해당 코드는 G열(점수 열)에 숫자가 있고 80점 미만일 경우 해당 행을 삭제하는 코드예요
기존 코드에 삽입하려고 하시면 
 
빈 행 제거
For i = lastRow To 2 Step -1
    If Application.WorksheetFunction.CountA(ws.Rows(i)) = 0 Then
        ws.Rows(i). Delete
    End If
Next i

' ↓ 여기에 점수 미만 삭제 코드 삽입 하시면 돼요.

 

 

<엑셀 자동정리 매크로>

정상적으로 정리가 되는 걸 확인할 수 있어요.


<엑셀 자동정리 매크로>

아니면 해당 코드만으로도 80점 이하는 삭제하는 코드만 입력해도 가능하니 한번 테스트해보시면 좋을 것 같아요.

오늘은 이렇게 엑셀에서 VBA를 이용하여 자동정리 매크로를 만들어보는 방법에 대해 알아보았는데, 오늘 포스팅이 여러분들에게 유익한 정보가 되었으면 좋겠어요. 그럼 지금까지 휴잉이었습니다. 감사합니다.

여러분들의 하뚜♡와 구독 & 댓글은 저에게 큰 힘이 되어요^^


이 글을 공유하기

댓글

Designed by JB FACTORY