반응형
코딩으로 시간 벌기 / 엑셀 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행에 있어야 정확하게 작동합니다.
색상이 전혀 없는 셀을 선택하고 실행하면 기본 정렬 상태로 돌아갑니다.

색깔을 활용한 3부작 시리즈가 이렇게 완성되었습니다! 개수 세기, 합계 구하기, 그리고 오늘 배운 정렬까지. 이 세 가지만 자유자재로 써도 엑셀 업무의 질이 달라질 거예요.

다음 편에서는 "엑셀 보고서 작성을 자동화하는 절대 법칙"에 대해 다뤄보겠습니다. 많은 기대 부탁드립니다! 😊

반응형

+ Recent posts