5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴
실무 위키응용 공식중복값 제거 후 고유값 개수 세기

중복값 제거 후 고유값 개수 세기

지원 버전 자세히 보기
엑셀 2013 이전엑셀 2016엑셀 2019엑셀 2021엑셀 2024M365웹 엑셀

범위에서 중복값을 제외해 고유값 개수를 계산합니다.

중복값 제거 후 고유값 개수 세기 예제 미리보기
예제 미리보기 크게 보기

인수 설명

012021 이후 버전 공식

=COUNTA ( UNIQUE ( 범위 ) )
인수 설명 자세히 보기(인수를 클릭하면 해당 영역만 강조됩니다. 여러 개를 함께 켜고 끌 수 있습니다.)
인수구분설명
범위필수중복값을 제거한 뒤 고유값 개수를 셀 데이터가 입력된 범위입니다.
D2=COUNTA(UNIQUE(B2:B8))
A
B
C
D
E
1
거래일
거래처
고유 거래처 수
2
2026-07-01
미래상사
4
3
2026-07-01
한빛유통
4
2026-07-02
미래상사
5
2026-07-03
새봄식품
6
2026-07-04
한빛유통
7
2026-07-05
드림문구
8
2026-07-06
미래상사
9
UNIQUE 함수가 B2:B8에서 네 거래처만 남기고 COUNTA 함수가 그 개수를 세므로 D2 셀은 4를 반환합니다.

동작 원리

UNIQUE 함수는 범위에서 고유값을 반환하고 COUNTA 함수는 그 개수를 셉니다.

2021 이후 버전 공식의 예제 시트에서 D2 셀이 4를 반환하는 계산 과정입니다. 단계마다 강조된 부분이 어떻게 계산되는지 살펴보세요.

1

UNIQUE 함수가 고유값을 추립니다

UNIQUE 함수는 B2:B8에서 중복된 거래처를 한 번씩만 남겨 네 개의 값으로 반환합니다.

=UNIQUE ( B2:B8 )
= {"미래상사";"한빛유통";"새봄식품";"드림문구"} 중복을 제거하고 남은 네 거래처입니다.
2

COUNTA 함수가 배열의 개수를 셉니다

COUNTA 함수는 UNIQUE 함수가 반환한 네 값을 세어 고유 거래처 개수를 계산합니다.

=COUNTA ( UNIQUE ( B2:B8 ) )
= 4 고유 거래처 개수입니다.

02모든 버전 호환 공식

=SUMPRODUCT ( ( 범위<;>;"" ) / COUNTIF ( 범위, 범위&;"" ) )
인수 설명 자세히 보기
인수구분설명
범위필수고유값 개수를 셀 데이터가 입력된 범위입니다. =SUMPRODUCT(1/COUNTIF(범위,범위)) 기본형은 빈칸에서 #DIV/0! 오류를 반환하므로, 이 블록의 공식은 빈칸을 제외하도록 작성합니다.
D2=SUMPRODUCT((B2:B8<>"")/COUNTIF(B2:B8,B2:B8&""))
A
B
C
D
E
1
거래일
거래처
고유 거래처 수
2
2026-07-01
미래상사
4
3
2026-07-01
한빛유통
4
2026-07-02
미래상사
5
2026-07-03
새봄식품
6
2026-07-04
한빛유통
7
2026-07-05
드림문구
8
2026-07-06
미래상사
9
미래상사 3건, 한빛유통 2건, 새봄식품과 드림문구 각 1건을 고유값 하나씩으로 계산해 D2 셀은 4를 반환합니다. 현재 B2:B8에는 빈칸이 없지만, =SUMPRODUCT(1/COUNTIF(범위,범위)) 기본형은 빈칸이 생기면 #DIV/0! 오류를 반환하므로 이 블록의 빈칸 제외 공식을 사용합니다.

동작 원리

COUNTIF 함수는 각 값의 반복 횟수를 계산하고 SUMPRODUCT 함수는 그 역수를 더해 같은 고유값 개수를 반환합니다.

모든 버전 호환 공식의 예제 시트에서 D2 셀이 4를 반환하는 계산 과정입니다. 단계마다 강조된 부분이 어떻게 계산되는지 살펴보세요.

1

COUNTIF 함수가 반복 횟수를 계산합니다

COUNTIF 함수는 각 거래처가 몇 번 나타나는지 계산합니다. 보정 없는 기본형 =SUMPRODUCT(1/COUNTIF(범위,범위))은 빈칸 위치의 COUNTIF 결과가 0이 되어 #DIV/0! 오류를 반환합니다. 호환식은 원문에 제시된 &""와 (범위"") 보정을 함께 적용해 빈칸을 제외합니다.

=COUNTIF ( B2:B8, B2:B8&"" )
= {3;2;3;1;2;1;3} B2:B8의 각 행에 대응하는 반복 횟수입니다.
2

SUMPRODUCT 함수가 역수를 더합니다

같은 거래처가 세 번 나오면 각 행은 1/3씩, 두 번 나오면 1/2씩 더해져 거래처마다 합계가 1이 됩니다. 네 거래처의 합계이므로 4를 반환합니다.

=SUMPRODUCT ( ( B2:B8<>"" ) / COUNTIF ( B2:B8, B2:B8&"" ) )
= 4 1/3+1/2+1/3+1+1/2+1+1/3=4입니다.
이 공식이 사용하는 함수

댓글 66

댓글 66
4.9 (36개 평가)
귀를기울이면
귀를기울이면 2020.04.24 11:21
감사합니다~
로돌릭
로돌릭 2020.04.26 09:49
감사합니다!!!
김혜영
김혜영 2020.05.04 09:57
감사합니다
쪼니홍이
쪼니홍이 2020.05.04 14:27
질문드립니다~
'공식의 동작원리' ④의 두번째 단락에서
= SUMPRODUCT( {TRUE, TRUE, TRUE, FALSE, TRUE, TRUE}/{3, 2, 3, 0, 2, 3}) 중
{3, 2, 3, 0, 2, 3}의 4번째 인수 '0'이 아니라 '1' 아닌가요?
지속남
지속남 2020.05.05 21:06
감사합니다!
엑셀정
엑셀정 2020.05.06 19:25
감사합니다.
only****
only**** 2020.05.24 12:26
또 하나 배워갑니다. 정말 감사합니다. ^^
뾰땅
뾰땅 2020.07.10 10:18
중복갑 제거 후 카운트 관련 =COUNTA(UNIQUE(범위)) 이 함수를 사용할떄 다중조건을 어떻게 적용 시키나요?
오빠두엑셀
오빠두엑셀 작성자 2020.07.10 11:16
안녕하세요? :)
제가 설명을 잘못 적어드렸습니다.
위 공식은 다중조건이 아니라 넓은 범위에서 고유값을 추출할 수 있습니다.
조건을 만족하는 고유값 개수를 세려면 아래 공식을 사용해보시겠어요?^^
=UNIQUE(FILTER(범위,(범위=조건1)*(범위=조건2)...))
di4jf2
di4jf2 2020.11.10 11:40
게시물이 정말 유익합니다!
질문 하나 드립니다.
UNIQUE, FILTER 수식을 사용하지 않고 다중조건을 만족하는 고유값의 개수를 세는 공식이 있을까요?
오빠두엑셀
오빠두엑셀 작성자 2020.11.10 12:35
=SUMPRODUCT(1/COUNTIF(범위,범위))
공식을
=SUMPRODUCT(1/COUNTIFS(범위1,범위1,범위2,범위2))
로 사용해보세요 ^^
손손손
손손손 2021.04.22 18:17
안녕하세요! 항상 많은 도움 받고 있습니다!
저 해당 조건을 사용할 때 값이 없는 경우도 1로 카운트를 하는 경우가 있는데... 혹시 해결가능한 방법이 있을까요?
오빠두엑셀
오빠두엑셀 작성자 2021.04.24 17:17
음.. 공식을 아래 처럼 수정해보시겠어요?
=SUMPRODUCT(1/(COUNTIFS(범위1,범위1,범위2,범위2)*(범위1<>"")*(범위2<>""))
러재
러재 2021.06.01 16:39
아 그런데.. 제가 돌리는 자료는 워낙 데이터가 방대하다보니... 너무 느려서 안돌아가네요.
왜 값이 없으면 1로 카운트되는지... 궁금하긴 하지만 일단
고민하다가 IF문을 써서
해당카운트에 개수가 0이면 0, 0아니면 아래 수식으로 계산하는 방식을 쓰고 있습니다. 답변 감사합니다. ^^
if(countifs(범위,범위1=조건1,범위2=조건2 )=0 , 0,Counta(unique(filter(범위,(범위1=조건1)*(범위2=조건2))

시훈세은파
시훈세은파 2022.10.18 11:17
엑셀 중복값 제거후 고유값 개수 계산시 빈셀도 1로 값이 나오던데 어떻게 해야 될까요? 아래 방법으로 해도 해결이 안되네요
손진성
손진성 2020.12.01 18:44
좋은 정보 감사합니다. 추가적인 질문이 있습니다. 만약 일자별 근무조별 근무인원은 어떻게 구할 수 있을까요? 중복 값 제거도 필요하구요. 감사합니다.
오빠두엑셀
오빠두엑셀 작성자 2020.12.03 01:54
아래 공식을 사용해보세요.
=SUMPRODUCT(1/COUNTIFS(범위1,범위1,범위2,범위2))
로 사용해보세요 ^^
젝스텔라
젝스텔라 2020.12.02 12:19
정말 많이 도움 됐습니다~ 감사드리며
=COUNTA(UNIQUE(범위))
'2020.12.01에 해당하는' 이라는 조건을 추가 반영하고 싶은데 어떻게 하면 될까요??
오빠두엑셀
오빠두엑셀 작성자 2020.12.03 01:57
안녕하세요. 아래 수식을 사용해보세요.
=UNIQUE(FILTER(전체범위,날짜=DATE(2020,12,1)))
레아
레아 2022.01.13 00:01
날짜를 fromto 조건으로 할 때는 어떻게 해야 할까요?
C열에 날짜가 있고, 카운트할 값은 D열에 있습니다.
매월1일에서 말일까지 데이터 중 중복을 제외한 고유 값을 카운트하려고 하는데 어떻게 구할 수 있을까요?
2016 버전을 사용하고 있어, unique, xfilter 함수를 추가했습니다.
스크랩 완료