범위에서 고유 값의 수를 계산하는 방법은 무엇입니까?


32

필터 등을 사용하여 이미 구성된 큰 테이블이 있습니다. 해당 열의 고유 값 수가 포함 된 특정 열 아래에 요약을 추가하고 싶습니다.

기능이 =COUNTDISTINCT(A2:A100)없으므로 대신 어떻게해야합니까? (2003 엑셀)

테이블이나 필터링을 수정하고 싶지 않기 때문에이 비슷한 질문에 대한 답변을 정확하게 사용할 수 없습니다 . 수정이 아닌 워크 시트에 추가 가 필요합니다 .

답변:


31
=SUMPRODUCT((A2:A100 <> "")/COUNTIF(A2:A100,A2:A100 & ""))

배열 수식을 사용하지 않고도 수행합니다.


4
어떻게 / 왜 작동합니까 ???
RBarryYoung

4
@RBarryYoung, SUMPRODUCT는 배열 함수처럼 작동하지 않습니다. 여기에서 사용되는 것보다 훨씬 많은 작업을 수행 할 수 있지만 여기에서는 열의 모든 인스턴스를 확인하고 열에 몇 번의 반복이 있는지에 따라 각 고유 값에 대해 스케일 된 값을 제시합니다. 따라서 'a'의 두 인스턴스가있는 경우 1을 얻기 위해 1/2과 1/2을 더합니다. 따라서 모든 고유 값에 대해 합계에 1을 추가합니다.
랜스 로버츠

1
이것은 내가에 문제가 있다는 일부입니다 " . 각 구별 값에 대한 스케일 값을 세우는 것은 열에서 얼마나 많은 반복을 기반으로 "나는 이것을 이해한다면, SUMPRODUCT 효과적으로 같은 루프를 실행하고 for each [i] in A2:A100 DO:{ sum += (([i]<>"")/COUNTIF(A2:A100,[i])) }, 바로 ? 나는 그것이 모두 조건 및 제 2 COUNTIF 매개 변수 만 열거 아는 방법을 이해하는 약간의 문제 데 없는 1 COUNTIF 매개 변수를? 이 DWIM-magic은 MS가 문서화하거나 설명하고 있습니까? 의도적으로 작성하는 방법을 아는 것이 좋습니다.
RBarryYoung

1
예, 알 수 있습니다. 일반적으로 단일 값이 될 배열을 반복하고 모든 매개 변수 (이 경우 1)를 곱한 다음 반복을 추가합니다. SUMPRODUCT는 매우 복잡 할 수 있지만 Excel에서 가장 유용한 기능 중 하나이며 문자 기적을 수행 할 수 있습니다.
랜스 로버츠

4
입력에 빈 항목이 있으면 실패합니다. YouTube 에서 데모 한 쉬운 수정 사항 은 다음과 같습니다 =SUMPRODUCT((A2:A100<>"")/COUNTIF(A2:A100,A2:A100&"")). 그것은 보장 COUNTIF결코이 초래 빈 라인에 대해 0을 반환하지 않습니다 DIV/0오류가 발생했습니다.
cfi

7

나는 그것을 해결하는 놀라운 원형 교차로 인 것처럼 보이는 해결책을 찾았 습니다. 그러나, 그것은 작동합니다 ...

= SUM (IF (COUNTIF (A2 : A100, A2 : A100) = 0, "", 1 / COUNTIF (A2 : A100, A2 : A100)))

Ctrl+ Shift+ 를 누릅니다 Enter. 를 누르면 Enter잘못된 결과가 나타납니다.


다른 답변을보고 싶습니다! 이것을 해결하는 더 좋은 방법이 있습니까?
Torben Gundtofte-Bruun

1
아뇨, 그게 가장 좋은 방법입니다. 왜 거기에 IF가 있는지 잘 모르겠습니다. 입력 한 = SUM (1 / COUNTIF (A2 : A100, A2 : A100)) 배열을 사용할 수 있습니다
dkusleika

2
@dkusleika IF는 0으로 나누기 오류를 방지하기 위해 존재하는 것 같습니다. 위에 링크 된 페이지에서 언급했듯이 범위에 빈 셀이 포함되어 있으면 필요합니다. 그렇지 않으면 IF를 그대로 둘 수 있습니다.
Bavi_H


1

이 기사 는 텍스트 값에 대해 이것을 보여줍니다.

=SUM(IF(FREQUENCY(IF(LEN(C3:C25)>0,MATCH(C3:C25,C3:C25,0),""), IF(LEN(C3:C25)>0,MATCH(C3:C25,C3:C25,0),""))>0,1))

숫자 값의 경우 :

=SUM(IF(FREQUENCY(C3:C25, C3:C25)>0,1))

이 기사 는 유사한 공식을 보여 주지만 필터를 사용하는 방법도 보여줍니다.

필터를 사용하여 고유 값의 수를 계산하십시오.

고급 필터를 사용하면 데이터 열에서 고유 한 값을 추출하여 새 위치에 붙여 넣을 수 있습니다. 그런 다음 ROWS 기능을 사용하여 새 범위의 항목 수를 계산할 수 있습니다.

  1. 열의 첫 번째 행에 열 머리글이 있는지 확인하십시오.
  2. 데이터 메뉴에서 필터를 가리킨 다음 고급 필터를 클릭하십시오.
  3. 고급 필터 대화 상자에서 다른 위치로 복사를 클릭하십시오.
  4. 세는 범위가 아직 선택되지 않은 경우 목록 범위 상자에서 정보를 삭제 한 다음 데이터가 포함 된 열을 클릭하거나 범위를 선택하십시오.
  5. 복사 위치 상자에서 상자의 정보를 삭제하거나 상자를 클릭 한 다음 고유 한 값을 복사 할 빈 열을 클릭하십시오.
  6. 고유 레코드 만 확인란을 선택하고 확인을 클릭하십시오.

    선택한 범위의 고유 한 값이 새 열에 복사됩니다.

  7. 범위의 마지막 셀 아래에있는 빈 셀에 ROWS 함수를 입력하십시오. 방금 인수로 복사 한 고유 값 범위를 사용하십시오. 예를 들어, 고유 값의 범위가 B1 : B45이면 다음을 입력하십시오.
    = ROWS (B1 : B45)


1

= SUM (1 / COUNTIF (A2 : A100; A2 : A100))

Ctrl + Shift + Enter로 확인

각 셀에 대해 셀이 몇 번 발생하는지 계산하고 이러한 모든 값의 역수를 합산합니다. 어떤 문자열이나 숫자가 5 번 점유한다고 가정합니다. 그 역수는 0.2로 5 번 합산되므로 1이 더해집니다. 결국 그것은 다른 값의 수를 제공합니다.

참고 : 공백이 발생하면 작동하지 않습니다!


0

이 링크를 사용해보십시오. 빈 셀을 생략 한 목록에서 고유 한 값을 계산하는 방법을 보여줍니다.

http://www.functioninexcel.com/lists-arrays/count-unique-values-in-a-list/

= sum (if (frequency (match (List, List, 0), match (List, List, 0))> 0, 1))

예를 들어 "목록"은 셀 범위입니다.

목록 = $ A $ 2 : $ A $ 12 OR- 목록 = 오프셋 ($ A $ 1 ,,, match (rept ( "z", 255), $ A : $ A)))-또는-목록 = 오프셋 ($ A $ 1, ,, match (값 (rept ( "9", 255)), $ A : $ A))


0

= SUM (IF (FREQUENCY (IF (SUBTOTAL (3, OFFSET (A2 : A100, ROW (A2 : A100) -ROW (A2), 0,1))), 일치 ( "~"& A2 : A100, A2 : A100 & " ", 0)), ROW (A2 : A100) -ROW (A2) +1), 1))

이 수식을 붙여 넣은 후에는 Ctrl + Shift + Enter를 누르십시오. 이것은 A2 : A100의 범위에 해당하며 그에 따라 범위를 조정하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.