• 최초 작성일: 2002-12-13
  • 최종 수정일: 2026-09-26
  • 조회수: 30 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 색상별 정렬하기

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

Style is the man himself. Style is the dress of thoughts. 글은 곧 그사람 자신이다. 문체는 품고있는 사상의 의상이다. 그래서 옛 사람들은 身言書判을 통해 그 사람의 됨됨이를 파악했나 봅니다.

X0256, 257 강좌에서 색상별 필터링 하는 방법, 합계 구하는 방법에 대해 소개를

드린 적이 있었습니다. 요즘도 잊을만 하면 한번씩 문의를 하시는 분이 있는 것으로

미루어… 이런 류의 작업을 하시는 분이 많나 봅니다.

해서 색상별로 정렬하는 것을 다시 한번 다루어 보도록 하겠습니다.

다루긴 다루는데 지난 강좌들과 똑같이 하면,

'Exceller… 드디어 강좌 소재가 다 떨어졌나보군! 강좌를 재탕하다니...'

하실 테니까 이번 시간에는 좀 다른 방법으로 접근해 보겠습니다.

X0256, 257 강좌에서는 Excel4Macro 함수 중에서 Get.Cell 함수를 사용하였습니다.

이번 시간에는 사용자 정의 함수를 만들어 워크시트 상에서 적용을 시켜보도록

합니다. 강좌의 성격상 VBA 강좌 시간에 다루는 것이 적합하겠지만 강좌의 연속성

측면에서 그렇게 하는 것이니 이해하시기 바랍니다.

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 지음

📊 신간 전자책(PDF) · 287쪽 · 13500원

엑셀 대시보드를 만드는 최적의 '표준 3계층 구조'

  • 3초 안에 읽히는 화면 설계 감각 습득
  • Microsoft Excel MVP의 실전 노하우 수록
  • 중간마진 없는 합리적인 가격, 오직 아이엑셀러에서만!
지금 구매하기 완성 화면 보기

색상별 정렬하기

핵심 요약

  • 색상별 정렬하기에 필요한 핵심 작업 흐름과 엑셀 활용 방법을 원본 강좌의 순서대로 정리합니다.
  • 색상별정렬, 정렬, 셀색상 등 원본에서 사용된 주요 기능과 수식을 예제와 함께 확인할 수 있습니다.
  • 원본 예제 데이터와 설명을 바탕으로 실제 작업에 적용할 수 있도록 구성했습니다.
DATA글자색배경색
=INT(RAND()*1000)=findcolnum(RC[-1])=findcolnum(RC[-2],FALSE())
=INT(RAND()*1000)=findcolnum(RC[-1])=findcolnum(RC[-2],FALSE())
=INT(RAND()*1000)=findcolnum(RC[-1])=findcolnum(RC[-2],FALSE())
=INT(RAND()*1000)=findcolnum(RC[-1])=findcolnum(RC[-2],FALSE())
=INT(RAND()*1000)=findcolnum(RC[-1])=findcolnum(RC[-2],FALSE())
=INT(RAND()*1000)=findcolnum(RC[-1])=findcolnum(RC[-2],FALSE())
=INT(RAND()*1000)=findcolnum(RC[-1])=findcolnum(RC[-2],FALSE())
=INT(RAND()*1000)=findcolnum(RC[-1])=findcolnum(RC[-2],FALSE())
=INT(RAND()*1000)=findcolnum(RC[-1])=findcolnum(RC[-2],FALSE())
=INT(RAND()*1000)=findcolnum(RC[-1])=findcolnum(RC[-2],FALSE())
=INT(RAND()*1000)=findcolnum(RC[-1])=findcolnum(RC[-2],FALSE())
=INT(RAND()*1000)=findcolnum(RC[-1])=findcolnum(RC[-2],FALSE())
=INT(RAND()*1000)=findcolnum(RC[-1])=findcolnum(RC[-2],FALSE())
=INT(RAND()*1000)=findcolnum(RC[-1])=findcolnum(RC[-2],FALSE())
=INT(RAND()*1000)=findcolnum(RC[-1])=findcolnum(RC[-2],FALSE())
=INT(RAND()*1000)=findcolnum(RC[-1])=findcolnum(RC[-2],FALSE())

색상별로 필터링을 하거나 정렬을 하고자 할 때 데이터 상에서 바로 적용이 되도록

할 수는 없습니다. 현재로선…

지난번에 Get.Cell 함수를 사용할 때도 그러하였지만, 색상의 ColorIndex 값을

먼저 구한 다음, 이것을 이용하여 작업을 하는 방법을 통해 가능하게 되는 것입니다.

사용자 정의 함수를 사용하는 방법도 마찬가지 입니다. 위에서 보시다시피…

위 빨간색 영역에는 아래의 수식이 들어있습니다.

글자색=findcolnum(B32)
배경색=findcolnum(B32,FALSE)
색상별 정렬하기 관련 예시 이미지 1
아이엑셀러

FindColNum 이라는 사용자 정의 함수는 아래와 같습니다.

색상별 정렬하기 관련 예시 이미지 2
아이엑셀러

Function FindColNum(Range_array As Range, Optional Find_type As Boolean = True)

' 함수 시작부분부터 예사롭지가 않군요. 이 함수는 두 개의 인수를 가집니다.

' Range_array는 ColorIndex 값을 알아낼 셀, Find_type은 셀 배경 색상값을 구할 것이냐 아니면

' 글자색을 구할 것이냐를 구분하기 위한 구분자입니다.

' 그런데 앞에 Optional 이라는 요상한 단어가 붙어있어서 보는 사람들에게 겁을 주고 있네요.

' 우리가 자동차를 살 때 기본 사양으로 받는 품목이 있고 옵션으로 돈을 추가로 내고 설치하는

' 품목이 있지요? 이 FindColNum 함수의 경우, 구분자, 즉 셀 배경색을 구할 것인가 글자색을

' 구할 것인가 하는 부분이 옵션이라는 것입니다.

' 다시 말하자면, 특별히 옵션 사양을 지정하지 않는 이상 기본적으로 Find_type을 True 값으로

' 설정하겠다는 의미입니다. 그러면 True 값으로 설정해서는 어떻게 한다는 것인가? 그것은…

' 아래에 가면 아시게 됩니다.

Dim lngColorIndex As Long

If Range_array.Cells.Count > 1 Then

' 만약 선택된 영역의 셀 수가 2개 이상이면 첫번째 셀을 대상으로 합니다.

Set Range_array = Range_array.Cells(1)

End If

With Range_array

' 선택된 Range_array에 대해 글자색을

If Find_type = True Then

' Find_type의 값이 True이면 글자의 색을 파악하고

lngColorIndex = .Font.ColorIndex

Else

' 그렇지 않으면 배경색을 파악합니다.

lngColorIndex = .Interior.ColorIndex

End If

End With

FindColNum = lngColorIndex

End Function

기본 원리만 이해하신다면 그리 복잡하지 않지요?

보너스로 한 가지 더!

언젠가 강좌 시간에 소개를 드린 듯도 한데…

이런 식으로 사용자 정의 함수를 만들고 '삽입-함수' 메뉴를 클릭해 보면,

'사용자 정의'라는 범주 안에 우리가 만든 함수가 들어 있습니다.

그런데 아래의 그림을 보면 '정보'라는 범주 안에 FindColNum 함수가 들어있지요?

색상별 정렬하기 관련 예시 이미지 3
아이엑셀러

이것은 아래와 같이 MacroOptions 메서드를 이용하시면 됩니다.

Sub ChangeCategory()

Application.MacroOptions macro:="FindColNum", _

Description:="글자 또는 셀 배경색 ColorIndex 값을 알려줍니다", _

Category:=9 ' 정보

End Sub

여기서 Category 속성의 값은 아래의 표를 참고하시면 되겠습니다.

CategoryCategory Name
0모두
1재무
2날짜/시간
3수학/삼각
4통계
5찾기/참조 영역
6데이터베이스
7텍스트
8논리
9정보
10Commands(이 범주는 화면 상에 표시되지 않습니다)
11Customizing(이 범주도 숨겨져 있습니다)
12Macro Control(이 범주도 숨겨져 있습니다)
13DDE/External(이 범주도 숨겨져 있습니다)
14사용자 정의(Default)
15공학(이 범주는 분석 도구를 추가설치 한 경우 나타납니다)

오늘은 여기까지…

Exceller's Book: 엑셀 XP 예제 활용 - 아무도 가르쳐주지 않는 엑셀 XP 비법/디지털북스刊

엑셀을 처음 접하는 분들, 엑셀을 몇 년간 사용해 왔으나 엑셀의 체계를

다잡고자 하는 분들, 그리고 '이제 엑셀에 대해서는 나를 당할자가

없도다'라고 생각하시는 분들도 참고하시기 바랍니다.

색상별 정렬하기 관련 예시 이미지 4
아이엑셀러

마치며

이번 강좌에서는 '색상별 정렬하기'과 관련된 작업 방법을 원본 예제와 함께 살펴보았습니다. 필요한 부분을 하나씩 적용해 보시기 바랍니다.