중복값 제거 후 고유값 개수 세기
지원 버전 자세히 보기
범위에서 중복값을 제외한 고유값의 개수를 세는 공식입니다. UNIQUE 함수와 SUMPRODUCT 함수 두 가지 방법으로 계산할 수 있습니다.
인수 설명
01COUNTA + UNIQUE 공식 (엑셀 2021 이후)
=COUNTA ( UNIQUE ( 범위 ) )인수 설명 자세히 보기(인수를 클릭하면 해당 영역만 강조됩니다. 여러 개를 함께 켜고 끌 수 있습니다.)
02SUMPRODUCT + COUNTIF 공식 (모든 버전)
=SUMPRODUCT ( ( 범위<>"" ) / COUNTIF ( 범위, 범위&"" ) )인수 설명 자세히 보기
동작 원리
01COUNTA + UNIQUE 공식 (엑셀 2021 이후)
UNIQUE 함수는 범위에서 고유값을 반환하고 COUNTA 함수는 그 개수를 셉니다.
2021 이후 버전 공식의 예제 시트에서 D2 셀이 4를 반환하는 계산 과정입니다. 단계마다 강조된 부분이 어떻게 계산되는지 살펴보세요.
UNIQUE 함수가 고유값을 추립니다
UNIQUE 함수는 B2:B8에서 중복된 거래처를 한 번씩만 남겨 네 개의 값으로 반환합니다.
=UNIQUE ( B2:B8 )
= {"미래상사";"한빛유통";"새봄식품";"드림문구"}
중복을 제거하고 남은 네 거래처입니다. COUNTA 함수가 배열의 개수를 셉니다
COUNTA 함수는 UNIQUE 함수가 반환한 네 값을 세어 고유 거래처 개수를 계산합니다.
=COUNTA ( UNIQUE ( B2:B8 ) )
= 4
고유 거래처 개수입니다. 02SUMPRODUCT + COUNTIF 공식 (모든 버전)
COUNTIF 함수는 각 값의 반복 횟수를 계산하고 SUMPRODUCT 함수는 그 역수를 더해 같은 고유값 개수를 반환합니다.
모든 버전 호환 공식의 예제 시트에서 D2 셀이 4를 반환하는 계산 과정입니다. 단계마다 강조된 부분이 어떻게 계산되는지 살펴보세요.
COUNTIF 함수가 반복 횟수를 계산합니다
COUNTIF 함수는 각 거래처가 몇 번 나타나는지 계산합니다. 범위 뒤에 &""를 붙이면 빈칸도 빈 문자열로 비교되어 COUNTIF 결과가 0이 되지 않습니다.
=COUNTIF ( B2:B8, B2:B8&"" )
= {3;2;3;1;2;1;3}
B2:B8의 각 행에 대응하는 반복 횟수입니다. 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입니다.
'공식의 동작원리' ④의 두번째 단락에서
= SUMPRODUCT( {TRUE, TRUE, TRUE, FALSE, TRUE, TRUE}/{3, 2, 3, 0, 2, 3}) 중
{3, 2, 3, 0, 2, 3}의 4번째 인수 '0'이 아니라 '1' 아닌가요?
제가 설명을 잘못 적어드렸습니다.
위 공식은 다중조건이 아니라 넓은 범위에서 고유값을 추출할 수 있습니다.
조건을 만족하는 고유값 개수를 세려면 아래 공식을 사용해보시겠어요?^^
질문 하나 드립니다.
UNIQUE, FILTER 수식을 사용하지 않고 다중조건을 만족하는 고유값의 개수를 세는 공식이 있을까요?
공식을
=SUMPRODUCT(1/COUNTIFS(범위1,범위1,범위2,범위2))
로 사용해보세요 ^^
저 해당 조건을 사용할 때 값이 없는 경우도 1로 카운트를 하는 경우가 있는데... 혹시 해결가능한 방법이 있을까요?
=SUMPRODUCT(1/(COUNTIFS(범위1,범위1,범위2,범위2)*(범위1<>"")*(범위2<>""))
왜 값이 없으면 1로 카운트되는지... 궁금하긴 하지만 일단
고민하다가 IF문을 써서
해당카운트에 개수가 0이면 0, 0아니면 아래 수식으로 계산하는 방식을 쓰고 있습니다. 답변 감사합니다. ^^
if(countifs(범위,범위1=조건1,범위2=조건2 )=0 , 0,Counta(unique(filter(범위,(범위1=조건1)*(범위2=조건2))
=SUMPRODUCT(1/COUNTIFS(범위1,범위1,범위2,범위2))
로 사용해보세요 ^^
=COUNTA(UNIQUE(범위))
'2020.12.01에 해당하는' 이라는 조건을 추가 반영하고 싶은데 어떻게 하면 될까요??
C열에 날짜가 있고, 카운트할 값은 D열에 있습니다.
매월1일에서 말일까지 데이터 중 중복을 제외한 고유 값을 카운트하려고 하는데 어떻게 구할 수 있을까요?
2016 버전을 사용하고 있어, unique, xfilter 함수를 추가했습니다.