아이엑셀러 닷컴
  • 최초 작성일: 2023-08-19
  • 최종 수정일: 2023-08-19
  • 조회수: 2,688 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: X0581 ㅡ 중복된 항목 제거하는 법 총정리

엑셀러 권현욱

들어가기 전에 ㅡ 이젠 널 놓아주려 해

집 주변은 논과 밭, 과수원이었다. 그 무렵 외곽이 대개 그랬던 것처럼. 직접 농사를 짓진 않았지만 집 주변 텃밭을 허투루 놀리지 않았던 부모님 덕분에 계절에 무심하지 않을 수 있었다. 요즘으로 치면 주말 농장 수준으로 관여(?)하는 정도였지만 계절과 절기의 변화는 챙겨야 했다. 안 그랬다간 이웃 어른들의 지청구를 듣기 일쑤였다. 24절기가 무엇인지는 몸으로 알게 되었다.

언제부턴가 깨달았다. 절기는 계절을 한 템포 앞서 있다는 것을. 가을의 시작 '입추'와 서늘한 바람이 분다는 '처서' 사이인 요즘이지만 여전히 덥다. 8월 초에 가을을 떠올리고, 다음 주면 가을 바람이 불기 시작할 거라 믿는 사람이 얼마나 될까. 절기와 기후의 이런 불일치에 대한 지역전문가들의 견해는 크게 둘로 나뉘었다.

  • "아, 그거? 농사라 카는 거는 미리미리 대비해야 하는 거라서 조상님들이 그래 안 만들었겠나."(벼농사 전문 구씨 아저씨)
  • "머라 카노? 24절기를 만들 때하고 지금은 기후가 달라져서 그런 거지, 미리 대비는 무슨..."(영농후계자 전씨 아저씨)

지금은 안다. 24절기는 중국 화북지방(황하 유역) 날씨에 맞춰져 있기 때문이란 것을. 하지만 계절에 앞서 있는 절기의 순기능도 있음을 또한 안다. 성하(盛夏)에 입추를 떠올리고, 눈 덮인 2월에 입춘을 생각하면 당분간을 견뎌낼 여유가 생겨난다. 그런 순기능이 없었다면 24절기가 지금껏 명맥을 유지하기는 어려웠을 것이다(우리는 대국의 뜻에 반(反)해서 우리만의 문자와 천문도를 가질 정도로 강단 있는 민족이니 말이다)

"광복절만 지나면 더 이상 더위 때문에 밤잠 설치는 일은 없을 거다." 그 무렵 주변 어른들로부터 흔히 듣던 얘기다. 주말 사이에 모기 입이 돌아가게 될 지는 알 수 없지만 적어도 더위의 기세는 한풀 꺾인 듯 하다. 하늘도 한 뼘쯤 높아진 것 같다(노안 탓인가?).

이제 그만 널 놓아주려 해. 안녕, 내년에 봐~~

로딩 중...

(이미지 출처: unsplash.com)



이 강의는 아래 동영상 강의 내용과 보완 관계에 있습니다. 동영상과 함께 보시면 학습효과가 높아집니다. 멤버십 회원에게는 예제 파일을 보내드립니다.

멤버십 보러 가기

완성 예

다양한 이유로 '여러 항목들 중에서 중복되지 않는 고유한 값을 추출'해야 하는 경우가 흔히 있습니다. 엑셀에는 이런 용도로 사용할 수 있는 다양한 방법이 준비되어 있습니다.

로딩 중...

완성 예

중복된 항목을 제거하는 여러 가지 방법들을 정리해 보겠습니다. 함수/수식을 이용하는 방법 2가지와 엑셀의 기본 기능을 이용하는 방법 2가지에 대해 소개합니다.

방법 1: UNIQUE 함수 사용

Microsoft 365를 사용한다면 매우 간단하게 해결할 수 있습니다.

D4: =UNIQUE(B4:B33)
로딩 중...

D4 셀의 수식을 아래로 복사할 필요도 없이 엑셀이 알아서 자동으로 배열 형태로 처리해줍니다. 수식을 지우거나 변경할 때에도 원래 수식을 작성했던 E4 셀에서 처리하면 됩니다.

이 상태에서 정렬을 할 수도 있습니다. SORT 함수를 중첩 사용하면 간단히 처리됩니다.

오름차순 정렬: =SORT(UNIQUE(B4:B33))
내림차순 정렬: =SORT(UNIQUE(B4:B33),,-1)
로딩 중...

고유한 값 추출과 정렬을 동시에 처리

간단하고 좋긴 한데, Unique와 Sort는 둘 다 Microsoft 365 버전에서만 사용할 수 있습니다(웹 버전도 가능). 다른 버전을 사용하고 있다면 어떻게 해야 할까요?

방법 2: 배열 수식 사용

Microsoft 365 버전이 아니라면, 몇 가지 엑셀 기본 함수를 조합하여 배열 수식으로 만들면 됩니다. 아무래도 앞의 경우보다는 수식이 길고 복잡하니까 마음의 준비(?)와 함께 잠시 심호흡을 하세요.ㅎㅎ

E4 셀을 선택하고 다음 수식을 작성한 다음, Ctrl + Shift + Enter 키를 누릅니다. 수식 좌우의 중괄호 { }는 손으로 직접 입력하는 것이 아니라 Ctrl + Shift + Enter를 누르면 자동으로 생깁니다.

E4: =INDEX($B$4:$B$33, MATCH(0, COUNTIF($E$3:E3, $B$4:$B$33), 0))
로딩 중...

길고 복잡한 수식은 안쪽부터 해석하면 이해하기 쉽습니다.

  • E4 셀의 수식에서 COUNTIF($E$3:E3,$B$4:$B$33) 부분을 범위로 지정하고 F9 키를 누르면 지정 범위가 중간 계산됩니다.
    $E$3:E3 영역에는 $E$3:E3,$B$4:$B$33 배열과 일치하는 값이 하나도 없으므로 모두 0으로 표시됩니다.
    로딩 중...
  • 수식 선택 범위를 한 단계 확장합니다. 'MATCH(0,{0;0;0;0;0;0;...},0)' 부분을 해석해 보죠. 0을 배열에서 찾되, 정확히 일치하는 값을 찾습니다. 만약 같은 값이 여러 개 있다면 Match 함수는 첫 번째로 나온 값의 위치를 구합니다. F9 키를 이용하여 중간 계산을 해 보면 결과는 그림과 같이 나타납니다.
  • 로딩 중...
  • B4:B33 영역에서 첫 번째 셀 값(여기서는 'say')을 표시합니다.
  • E5, E6 셀로 가서 위 과정을 몇 차례 반복해 보면 개념을 파악할 수 있으리라 생각합니다. Countif 함수의 range 인수를 지정할 때 E3 셀부터 범위로 지정한 점에 유의하시기 바랍니다.
  • 참고로, F9 키를 이용하면 지정한 영역을 중간 계산할 수 있습니다. 직전 상태로 되돌아가려면 Ctrl + Z 키(또는 Esc)를 누르면 됩니다

추출할 항목 수를 벗어난 영역으로 수식을 복사하면 '#N/A(Not Available)' 오류가 발생합니다. Iferror 함수를 추가하여 해결할 수 있습니다(이것도 배열 수식).

E4: =IFERROR(INDEX($B$4:$B$33, MATCH(0, COUNTIF($E$3:E3, $B$4:$B$33), 0)), "")

방법 3: [중복된 항목 제거] 기능 이용

중복 데이터를 제거할 영역(B4:B33)을 H4 셀로 복사합니다. 범위를 지정한 상태에서 [데이터] 탭 - [데이터 도구] 그룹 - [중복된 항목 제거] 명령을 선택합니다.

로딩 중...

대화상자에서 [현재 선택 영역으로 [정렬] 항목을 선택하고 [중복된 항목 제거] 버튼을 클릭합니다.

로딩 중...

[중복 값 제거] 대화상자에서 [확인] 버튼을 클릭하면 중복값이 제거된 결과가 표시됩니다.

로딩 중...

방법 4: [고급 필터] 이용

[중복된 항목 제거] 기능은 엑셀 2007 버전부터 지원됩니다. 만약 이 기능을 사용할 수 없는 상황이라면 [고급 필터]를 이용할 수도 있습니다.

B4:B33 영역을 범위로 지정하고 [데이터] 탭 - [정렬 및 필터] 그룹 - [고급] 명령을 선택합니다.

[고급 필터] 대화상자가 나타나면 그림과 같이 지정합니다. [동일한 레코드는 하나만] 항목에 체크하는 것을 잊지 마시기 바랍니다.

로딩 중...

[확인] 버튼을 클릭하면 결과가 표시됩니다.

이렇게 해서 함수나 수식을 이용하는 방법 2가지와 엑셀 기본 기능을 이용하는 2가지 방법에 대해 살펴보았습니다. VBA로 해결할 수도 있습니다. VBA를 이용하면 좀 더 다양하고 복잡한 상황에서도 유연하게 대처할 수 있습니다. 이 방법은 별도 강의에서 소개하겠습니다.

시작부터 요란했던 여름이 지나가고 있습니다. 영국 비평가 존 러스킨의 말로 글을 맺습니다.

"세상에 나쁜 날씨란 없다. 서로 다른 종류의 좋은 날씨가 있을 따름이다."

아이엑셀러 닷컴