고유 한 값을 계산하는 간단한 피벗 테이블


134

이것은 배우는 간단한 피벗 테이블처럼 보입니다. 그룹화하는 특정 값에 대해 고유 한 값을 계산하고 싶습니다.

예를 들어, 나는 이것을 가지고있다 :

ABC   123
ABC   123
ABC   123
DEF   456
DEF   567
DEF   456
DEF   456

내가 원하는 것은 이것을 보여주는 피벗 테이블입니다.

ABC   1
DEF   2

내가 만든 간단한 피벗 테이블은 다음과 같은 수를 나타냅니다 (행 수).

ABC   3
DEF   4  

그러나 대신 고유 값의 수를 원합니다.

내가 실제로하려고하는 것은 첫 번째 열의 어떤 값이 모든 행에 대해 두 번째 열의 같은 값을 가지고 있지 않은지 알아내는 것입니다. 즉, "ABC"는 "good", "DEF"는 "bad"입니다

더 쉬운 방법이 있지만 피벗 테이블에 시도해 볼 것이라고 생각했습니다 ...


8
최신 버전의 Excel의 경우이 대답 이 가장 편리합니다.
데니스 Jaheruddin

답변:


108

세 번째 열을 삽입하고 셀 C2에이 수식을 붙여 넣습니다.

=IF(SUMPRODUCT(($A$2:$A2=A2)*($B$2:$B2=B2))>1,0,1)

복사하십시오. 이제 1 열과 3 열을 기준으로 피벗을 만듭니다. 스냅 샷 참조

여기에 이미지 설명을 입력하십시오


+1 첫 번째 행에 특별한 값이 필요하지 않기 때문에 이것이 내 솔루션보다 약간 쉽다고 생각합니다
lc.

2
좋은 기술. 나는 이것에 대해 몰랐다. 배열 함수를 사용하여 동일한 작업을 수행 할 수 있습니다 =IF(SUM((A$2:A2=A2)*(B$2:B2=B2)) > 1, 0, 1)(공식을 입력 할 때 Ctrl-Shift-Enter를 누르면 수식을 얻을 {}수 있습니다).
ErikE

특별한 기능이 필요없는 보편적 인 답변. 좋은 평범한 공식.
Alberto De Caro

이것을 세 개의 열이있는 상황으로 확장하는 방법에 대한 아이디어가 있습니까?
tumultous_rooster 2016

13
피벗 테이블 옵션을 사용하여 일부 행을 필터링하면이 답변이 올바른 솔루션을 제공하지 않습니다. 첫 번째 행이 필터링되었다고 가정 해 봅시다. ABC의 합은 0으로 나타납니다!
jarlemag

250

업데이트 : 이제 Excel 2013에서 자동 으로이 작업을 수행 할 수 있습니다. 이전 답변이 실제로 약간 다른 문제를 해결하기 때문에이 답변을 새로운 답변으로 만들었습니다.

해당 버전이있는 경우 피벗 테이블을 생성 할 데이터를 선택하고 테이블을 생성 할 때 '데이터 모델에이 데이터 추가'체크 박스 옵션이 선택되어 있는지 확인하십시오 (아래 참조).

'이 데이터를 데이터 모델에 추가'옆에있는 상자를 선택하십시오.

그런 다음 피벗 테이블이 열리면 행, 열 및 값을 정상적으로 만듭니다. 그런 다음 고유 카운트를 계산할 필드를 클릭하고 필드 값 설정을 편집하십시오. 필드 값 설정 편집

마지막으로 가장 마지막 옵션으로 스크롤하여 '고유 카운트'를 선택하십시오. '고유 카운트'옵션을 선택하십시오.

원하는 데이터를 표시하도록 피벗 테이블 값을 업데이트해야합니다.


5
당신은 엑셀 2013이있는 경우, 훨씬 더 자신을 @MichaelK
jrharshath

3
기존 피벗 테이블에서도이 작업을 수행 할 수 있습니까? 고유 카운트 기능에 액세스하기 위해 200 개 이상의 테이블을 다시 만들 필요가 없습니까?
루이 자

12
참고로, 파일을 아직 Excel (.xlsx) 파일로 저장하지 않은 경우 (예 : .csv 파일을 열 경우) "데이터 모델에이 데이터 추가"옵션이 비활성화 / 회색으로 표시됩니다 . 간단한 해결책은 파일을 Excel 파일로 저장하는 것입니다.
PonyEars

9
Mac에서 지원되지 않습니까? 이 옵션은 나에게 나타나지 않습니다. 버전 15.27에 있습니다.
jkupczak

4
일반적으로 데이터 모델은 Windows 전용 기능이므로이 옵션은 Mac에는 존재하지 않습니다.
Tomty

10

수식이 필요없는 혼합에 추가 옵션을 던지려고하지만 두 개의 다른 열에 걸쳐 세트 내에서 고유 한 값을 계산 해야하는 경우 도움이 될 수 있습니다. 원래 예를 사용하면 다음이 없었습니다.

ABC   123  
ABC   123  
ABC   123   
DEF   456  
DEF   567  
DEF   456  
DEF   456

그리고 다음과 같이 나타나기를 원합니다.

ABC   1  
DEF   2

그러나 더 비슷한 것 :

ABC   123  
ABC   123  
ABC   123  
ABC   456  
DEF   123  
DEF   456  
DEF   567  
DEF   456  
DEF   456

그리고 다음과 같이 나타나기를 원했습니다.

ABC  
   123    3  
   456    1  
DEF  
   123    1  
   456    3  
   567    1

데이터를이 형식으로 가져 오는 가장 좋은 방법을 찾은 다음 추가로 조작 할 수있는 방법은 다음을 사용하는 것입니다.

여기에 이미지 설명을 입력하십시오

'Running total in'을 선택한 후 보조 데이터 세트의 헤더를 선택하십시오 (이 경우 헤더는 123, 456 및 567을 포함하는 데이터 세트의 헤더 또는 열 제목 임). 이를 통해 기본 데이터 세트 내에서 해당 세트의 총 항목 수에 대한 최대 값을 얻을 수 있습니다.

그런 다음이 데이터를 복사하여 값으로 붙여 넣은 다음 다른 피벗 테이블에 넣어보다 쉽게 ​​조작 할 수 있습니다.

참고로, 약 1 억 5 천만 행의 데이터가 있었으므로 일부 수식 접근법, 특히 응용 프로그램이 계속 충돌하기 때문에 두 열 / 데이터 세트를 비교하려고 시도하는 것보다 훨씬 효과적이었습니다.


나는 완전히 다른 문제가 있었지만이 대답은 올바른 방향으로 나를 가리 켰습니다. 감사.
jtolle

이 대답은 수식을 적용 해야하는 500,000 개의 행이 있고 시도하려고하면 컴퓨터의 메모리가 부족하므로 내 요구에 맞습니다. 감사합니다!
cauldyclark

6

가장 쉬운 방법은 ( 창의 필드를 마우스 왼쪽 버튼으로 클릭) Distinct Count아래 의 옵션 을 사용하는 것 입니다. 옵션 은 목록 맨 아래에 있습니다.Value Field SettingsValuesDistinct Count

클릭 위치

이전 (TOP; 정상 Count) 및 이후 (BOTTOM; Distinct Count) 는 다음과 같습니다 .

카운트

고유 카운트


3
Office 2016 기준 :이 기능을 사용하려면 "데이터 모델에이 데이터 추가"를 선택하여 피벗 테이블을 만들어야합니다.
Leo


3

다음 수식에 대해 표를 정렬 할 필요는 없습니다. 각 고유 값에 대해 1을 반환합니다.

질문에 제시된 데이터의 테이블 범위가 A1 : B7이라고 가정하면 셀 C1에 다음 수식을 입력하십시오.

=IF(COUNTIF($B$1:$B1,B1)>1,0,COUNTIF($B$1:$B1,B1))

해당 수식을 모든 행에 복사하면 마지막 행에 다음이 포함됩니다.

=IF(COUNTIF($B$1:$B7,B7)>1,0,COUNTIF($B$1:$B7,B7))

결과적으로 레코드가 처음 발견 될 때 1이 리턴되고 이후에 0이 리턴됩니다.

피벗 테이블의 열을 합하면


2
큰 데이터 세트가있는 경우 =IF(COUNTIF($B$1:$B1,B1),1,0)countif가 한 번만 실행됩니다.
피터 앨버트

2

이 문제에 대한 나의 접근 방식은 여기에서 보는 것과 약간 달랐으므로 공유하겠습니다.

  1. (먼저 데이터 사본을 만드십시오)
  2. 열을 연결
  3. 연결된 열에서 중복 제거
  4. 마지막-결과 세트에서 피벗

참고 : 이해하기 쉽도록 이미지를 포함하고 싶지만 이것이 첫 번째 게시물이기 때문에 불가능합니다.)


1

Siddharth의 대답은 훌륭합니다.

그러나이 기술은 많은 양의 데이터로 작업 할 때 문제가 발생할 수 있습니다 (컴퓨터가 50,000 행에서 멈췄습니다). 덜 프로세서 집약적 인 방법 :

단일 고유성 검사

  1. 두 열로 정렬 (이 예에서는 A, B)
  2. 데이터가 적은 수식을 사용하십시오.

    =IF(SUMPRODUCT(($A2:$A3=A2)*($B2:$B3=B2))>1,0,1) 
    

다중 고유성 검사

다른 열에서 고유성을 확인해야하는 경우 두 가지 종류에 의존 할 수 없습니다.

대신에

  1. 단일 열 정렬 (A)
  2. 각 그룹의 최대 레코드 수를 포괄하는 수식을 추가하십시오. ABC에 50 개의 행이있을 경우 수식은 다음과 같습니다.

    =IF(SUMPRODUCT(($A2:$A49=A2)*($B2:$B49=B2))>1,0,1)
    

2
프로세서를 많이 사용하지 않는 또 다른 방법은 C 열과 C2 열을 추가하는 것 =A2&B2입니다. 그런 다음 D 열을 추가하고 D2에을 입력하십시오 =IF(MATCH(C2, C$2:C2, 0) = ROW(C1), 1, 0). 둘 다 채우십시오. 이것은 여전히 ​​전체 범위의 시작부터 검색하지만 첫 번째 값을 찾으면 중지되며 50,000 행의 값을 곱하는 대신 값을 찾아야하므로 훨씬 더 나은 성능을 제공해야합니다.
ErikE

@ErikE Sharp-나는 또한 당신의 기술이 처음 발견 될 때 멈춘다 고 생각합니다. 그러나 C에 고유 한 값이 많으면 (예 : ABC 50 개만) 대량의 데이터를 계속 확인합니다. 멋진 기능 : 데이터가 정렬되지 않은 경우 수식이 가장 효과적입니다.
workglide

1

Excel 2013은 피벗에서 개별 카운트를 수행 할 수 있습니다. 2013에 액세스 할 수없고 더 적은 양의 데이터 인 경우 원시 데이터의 사본을 두 개 만들고 사본 b에서 두 열을 모두 선택하고 중복을 제거하십시오. 그런 다음 피벗을 만들고 열을 계산합니다. b.


1

여러 기준에 COUNTIFS를 사용할 수 있습니다.

= 1 / COUNTIFS (A : A, A2, B : B, B2)를 누른 다음 아래로 끕니다. 원하는만큼 많은 기준을 넣을 수 있지만 처리하는 데 시간이 오래 걸립니다.


1

1 단계. 열 추가

2 단계.IF(COUNTIF(C2:$C$2410,C2)>1,0,1) 첫 번째 레코드에서 공식 = 사용

3 단계. 모든 레코드로 드래그

4 단계. 수식을 사용하여 열에서 '1'을 필터링합니다.


0

고유성을 저장하기 위해 추가 열을 만든 다음 피벗 테이블에서 요약 수 있습니다.

내 말은, cell C1은 항상이어야한다는 것 1입니다. 셀 C2은 수식을 포함해야합니다 =IF(COUNTIF($A$1:$A1,$A2)*COUNTIF($B$1:$B1,$B2)>0,0,1). 셀에 C3포함 되도록이 수식을 복사하십시오 =IF(COUNTIF($A$1:$A2,$A3)*COUNTIF($B$1:$B2,$B3)>0,0,1).

머리글 셀이있는 경우이 셀을 모두 한 줄 아래로 이동하고 C3수식은이어야합니다 =IF(COUNTIF($A$2:$A2,$A3)*COUNTIF($B$2:$B2,$B3)>0,0,1).


0

데이터를 정렬 한 경우 다음 공식을 사용하는 것이 좋습니다.

=IF(OR(A2<>A3,B2<>B3),1,0)

적은 셀을 사용하여 계산하므로 속도가 더 빠릅니다.


0

나는 보통 별개의 카운트를 수행하는 데 필요한 필드를 기준으로 데이터를 정렬 한 다음 IF (A2 = A1,0,1); 그런 다음 각 ID 그룹의 맨 위 행에 1을 얻습니다. 단순하고 큰 데이터 세트를 계산하는 데 시간이 걸리지 않습니다.


0

도우미 열에도 사용할 수 있습니다 VLOOKUP. 테스트 한 것보다 약간 빠릅니다 COUNTIF.

헤더를 사용하고 데이터가 cell A2에서 시작 하는 경우 행의 모든 ​​셀 에서이 수식을 사용하고 동일한 열의 다른 모든 셀에 복사하십시오.

=IFERROR(IF(VLOOKUP(A2;$A$1:A1;1;0)=A2;0;1);1)

-3

더 쉬운 방법을 찾았습니다. Siddarth Rout의 예를 참조하여 열 A에서 고유 값을 계산하려면 다음을 수행하십시오.

  • 새 열 C를 추가하고 수식 "= 1 / COUNTIF ($ A : $ A, A2)"로 C2를 채 웁니다.
  • 수식을 나머지 열로 드래그
  • 열 A를 행 레이블로 사용하고 값에 Sum {column C)을 사용하여 열 A의 고유 값 수를 얻습니다.

논리적으로 이것은 column을 보지 않기 때문에 OP에서 작동하지 않을 수 있습니다 B. 여러 열에서 작동하도록 어떻게 적용할까요?
ErikE 2013
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.