[Excel] 엑셀에서 버튼 클릭시 자동 정리 매크로 만들기(VBA초급)
- 문서 작성 꿀팁/엑셀(Excel)
- 2025. 5. 2. 09:42
안녕하세요. 오늘도 휴잉의 블로그를 찾아주신 여러분 감사드려요. 오늘 제가 포스팅할 내용은 "엑셀에서 버튼 클릭 시 자동 정리 매크로 만드는 방법"에 대해 포스팅해보려고 해요. 엑셀 데이터를 손으로 하나씩 정리하시는 분들이 계세요. 근데 한 번의 클릭으로 데이터 정리 작업을 자동화할 수 있다면 얼마나 편리할까요? 그래서 이번 포스팅을 통해 엑셀 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
위 코드를 입력해 주세요. 위 코드의 각 줄과 블록에 대한 자세한 설명은 아래 메모장을 통해 설명해 둘게요.
이제 엑셀 상단탭에서 개발도구 -> 삽입 -> 컨트롤 선택 후 시트에 드래그하여 삽입해 주세요.
매크로 지정창이 뜨면 자동정리를 클릭 후 확인버튼을 클릭해 주세요.
위 사진처럼 버튼이 생겼죠? 버튼을 한번 클릭해 주세요.
"자동 정리가 완료되었습니다"라고 창이 뜨며 빈셀을 제거가 되고 점수 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를 이용하여 자동정리 매크로를 만들어보는 방법에 대해 알아보았는데, 오늘 포스팅이 여러분들에게 유익한 정보가 되었으면 좋겠어요. 그럼 지금까지 휴잉이었습니다. 감사합니다.
여러분들의 하뚜♡와 구독 & 댓글은 저에게 큰 힘이 되어요^^
'문서 작성 꿀팁 > 엑셀(Excel)' 카테고리의 다른 글
[Excel] 엑셀 3D 참조 함수로 시트 집계 끝내기! (1) | 2025.05.01 |
---|---|
[Excel] 엑셀 셀 문자 간격 균등하게 분할하는 방법 (3) | 2025.04.07 |
[Excel] 엑셀 띄어쓰기 노가다 이제는 TRIM함수로 한번에 (2) | 2025.03.17 |
[Excel] 엑셀로 이벤트 당첨자 랜덤추첨기 만들기 꿀팁 (7) | 2025.03.13 |
[Excel] 엑셀 카메라기능 활성화 및 사용방법 꿀팁 (3) | 2025.02.24 |
이 글을 공유하기