반응형
코딩으로 시간 벌기 / 엑셀 VBA
세 번째 이야기: 색깔별 정렬, 클릭 한 번으로 끝내기! 🎨
물류아재 칵칵 · 엑셀 VBA 시리즈 3편
안녕하세요, 물류와 코딩 사이의 경계에서 성장하고 있는 물류아재 칵칵입니다. 😊
지난 1, 2편에서는 색깔이 칠해진 셀의 개수를 세고 합계를 구하는 함수를 배워봤습니다. 그런데 업무를 하다 보면 이런 생각이 들 때가 있죠. "개수는 알겠는데, 색칠된 데이터들만 맨 위로 모아서 한눈에 보고 싶다!"
엑셀 기본 필터 기능에도 '색상 기준 정렬'이 있지만, 데이터가 수천 줄이고 색상이 여러 개라면 매번 마우스를 클릭하는 것도 일입니다. 오늘은 클릭 한 번에 특정 색상을 맨 위로 올려주는 자동 정렬 매크로를 만들어 보겠습니다.
왜 자동 정렬 매크로가 필요할까요?
📦 실제 물류 업무 사례
재고 실사 중 '수량 불일치' 건에는 빨간색, '확인 필요' 건에는 노란색을 칠했습니다.
수많은 데이터 사이에 흩어져 있는 이 유색 셀들을 상단으로 즉시 집합시켜야 빠른 조치가 가능합니다.
재고 실사 중 '수량 불일치' 건에는 빨간색, '확인 필요' 건에는 노란색을 칠했습니다.
수많은 데이터 사이에 흩어져 있는 이 유색 셀들을 상단으로 즉시 집합시켜야 빠른 조치가 가능합니다.
색깔별 자동 정렬 매크로 코드
아래 코드를 복사해서 VBA 모듈에 붙여넣으세요. 이 매크로는 선택한 셀의 색상을 기준으로 데이터 전체를 정렬해 줍니다.
Sub SortByColor() Dim ws As Worksheet Dim targetColor As Long Dim lastRow As Long Dim lastCol As Long Dim sortCol As Integer Set ws = ActiveSheet '1. 현재 선택된 셀의 색상과 열 번호 가져오기 targetColor = Selection.Interior.Color sortCol = Selection.Column '2. 데이터의 마지막 행과 열 찾기 lastRow = ws.Cells(ws.Rows.Count, sortCol).End(xlUp).Row lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column '3. 정렬 실행 (선택한 색상을 맨 위로) ws.Sort.SortFields.Clear ws.Sort.SortFields.Add(Selection, xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = targetColor With ws.Sort .SetRange ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol)) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With MsgBox "선택한 색상 기준 정렬이 완료되었습니다!" End Sub
사용 방법 🚀
- 정렬의 기준이 될 색깔이 칠해진 셀을 하나 선택합니다.
- [개발 도구] -> [매크로] (Alt + F8)에서 SortByColor를 실행합니다.
- 해당 열에서 같은 색을 가진 모든 데이터가 제목 바로 아래로 즉시 모입니다!
💡 칵칵의 실무 팁
이 매크로를 [빠른 실행 도구 모음]이나 [도형 버튼]에 연결해 두면 마우스 클릭 한 번으로 수천 줄의 데이터를 정렬할 수 있어 매우 편리합니다.
이 매크로를 [빠른 실행 도구 모음]이나 [도형 버튼]에 연결해 두면 마우스 클릭 한 번으로 수천 줄의 데이터를 정렬할 수 있어 매우 편리합니다.
시리즈 종합 활용 🛠️
지금까지 배운 기능들을 조합하면 완벽한 업무 시스템이 됩니다.
| 단계 | 적용 기능 | 결과 |
|---|---|---|
| 1단계 | SortByColor (3편 ⭐) | 문제 데이터(유색 셀)를 맨 위로 집결 |
| 2단계 | CountByColor (1편) | 조치해야 할 전체 건수 즉시 파악 |
| 3단계 | SumByColor (2편) | 불일치 수량의 합계를 구해 정산 반영 |
⚠️ 주의사항
데이터에 제목(Header)이 반드시 1행에 있어야 정확하게 작동합니다.
색상이 전혀 없는 셀을 선택하고 실행하면 기본 정렬 상태로 돌아갑니다.
데이터에 제목(Header)이 반드시 1행에 있어야 정확하게 작동합니다.
색상이 전혀 없는 셀을 선택하고 실행하면 기본 정렬 상태로 돌아갑니다.
색깔을 활용한 3부작 시리즈가 이렇게 완성되었습니다! 개수 세기, 합계 구하기, 그리고 오늘 배운 정렬까지. 이 세 가지만 자유자재로 써도 엑셀 업무의 질이 달라질 거예요.
다음 편에서는 "엑셀 보고서 작성을 자동화하는 절대 법칙"에 대해 다뤄보겠습니다. 많은 기대 부탁드립니다! 😊
반응형
'코딩으로 시간 벌기 > 엑셀 VBA' 카테고리의 다른 글
| 일곱 번째 이야기: 보고서 자동화의 기초, 주소 지정의 기술 (0) | 2026.03.17 |
|---|---|
| 드롭다운 목록, 매크로로 자동 업데이트하기! 🔽 (0) | 2026.03.12 |
| 두 번째 이야기: 색깔 있는 셀, 합계도 5초 만에! (0) | 2026.03.05 |
| 1초 만에 데이터 찢기! 부서별/지역별 시트 자동 분할 매크로 (복붙용 코드 포함) 🚀 (4) | 2026.03.05 |
| 엑셀 보고서 작성, 아직도 '다른 이름으로 저장' 하세요? (5) | 2025.08.26 |
