programing

고유 값을 카운트하는 단순 피벗 테이블

lovejava 2023. 5. 4. 17:50

고유 값을 카운트하는 단순 피벗 테이블

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

예를 들어, 저는 다음과 같은 것을 가지고 있습니다.

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

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

ABC   1
DEF   2

작성한 단순 피벗 테이블은 다음과 같은 정보를 제공합니다(행 수 계산).

ABC   3
DEF   4  

하지만 나는 대신 고유한 값의 수를 원합니다.

제가 정말 하려고 하는 것은 첫 번째 열의 값이 모든 행에 대해 두 번째 열의 값이 같지 않은 값을 찾는 것입니다.즉, "ABC"는 "좋음"이고, "DEF"는 "나쁨"입니다.

더 쉬운 방법이 있을 거라고 확신하지만 피벗 테이블을 사용해 보겠습니다...

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

해당 버전의 경우 데이터를 선택하여 피벗 테이블을 만들고 테이블을 만들 때 '데이터 모델에 이 데이터 추가' 확인란을 선택합니다(아래 참조).

'데이터 모델에 이 데이터 추가' 옆의 상자를 선택합니다.

그런 다음 피벗 테이블이 열리면 행, 열 및 값을 정상적으로 만듭니다. 다음 값합니다.필드 값 설정 편집

' Count'를 선택합니다.'Distinct Count' 옵션을 선택합니다.

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

세 번 열 셀 삽 입 에 을 째 ▁cell에 3번째 을 삽입합니다.C2.

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

그리고 그것을 받아 적으세요.이제 첫 번째 열과 세 번째 열을 기준으로 피벗을 만듭니다.스냅샷 참조

여기에 이미지 설명 입력

공식이 필요하지 않지만 두 개의 다른 열에서 집합 내에서 고유한 값을 계산해야 할 경우 유용할 수 있는 추가 옵션을 혼합에 추가하고 싶습니다.원래의 예를 사용하면 다음과 같은 것이 없었습니다.

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을 포함하는 데이터 세트의 헤더 또는 열 제목이 됩니다).그러면 기본 데이터 세트 내에서 해당 세트의 총 항목 수와 함께 최대값이 제공됩니다.

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

참고로, 저는 약 25만 줄의 데이터를 보유하고 있었기 때문에 일부 공식 접근 방식보다 훨씬 효과적이었습니다. 특히 애플리케이션이 계속 중단되었기 때문에 두 개의 열/데이터 세트에서 비교를 시도하는 방식보다 더 효과적이었습니다.

는 가장 이 쉬방운법은을 했습니다.Distinct Count 아래의 Value Field Settings(왼쪽 클릭)Values은 창)입니다. 의 옵션Distinct Count이 목록의 맨 아래에 있습니다.

클릭할 위치

이전은(TOP; 정상다))은 다음과 .Count ( ) 이하후단하(;이▁)▁(▁after;Distinct Count)

세어보세요

고유 카운트

데브라 달글리쉬의 독특한 아이템 보기

여기에 이미지 설명 입력

표가 다음 공식에 대해 정렬될 필요는 없습니다. 각 고유 값에 대해 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이 반환됩니다.

피벗 테이블의 열을 단순하게 합합니다.

이 문제에 대한 저의 접근 방식은 제가 여기서 보는 것과 조금 달랐기 때문에 공유하겠습니다.

  1. (먼저 데이터 복사본 만들기)
  2. 열 연결
  3. 연결된 열에서 중복 제거
  4. 마지막 - 결과 집합에서 피벗

참고: 이것을 더 쉽게 이해할 수 있도록 이미지를 포함하고 싶지만, 이것이 나의 첫 게시물이기 때문에 할 수 없습니다;)

싯다스의 대답은 훌륭합니다.

그러나 이 기술은 대규모 데이터 집합으로 작업할 때 문제가 발생할 수 있습니다(내 컴퓨터는 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)
    

Excel 2013은 피벗에서 카운트를 구별할 수 있습니다.2013년에 액세스할 수 없고 데이터 양이 적으면 원시 데이터의 복사본을 두 개 만들고 복사본 b에서 두 열을 모두 선택하여 중복을 제거합니다.그런 다음 피벗을 만들고 열 b를 카운트합니다.

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

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

1단계. 열 추가

2단계. 공식 =을 사용합니다.IF(COUNTIF(C2:$C$2410,C2)>1,0,1)최고 기록으로

3단계. 모든 기록으로 끕니다.

4단계. 열에서 공식으로 '1'을 필터링합니다.

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

내 말은, 셀이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).

데이터를 정렬한 경우..저는 다음 공식을 사용할 것을 제안합니다.

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

이것은 계산에 더 적은 셀을 사용하기 때문에 더 빠릅니다.

저는 보통 고유한 카운트를 수행하는 데 필요한 필드별로 데이터를 정렬하고 IF(A2=A1,0,1)를 사용합니다. 그러면 각 ID 그룹의 맨 위 행에 1이 표시됩니다.단순하며 대규모 데이터셋을 계산하는 데 시간이 전혀 걸리지 않습니다.

도우미 열에도 사용할 수 있습니다.VLOOKUP제가 테스트를 해봤는데 조금 더 빨라 보입니다.COUNTIF.

헤더를 사용하고 있고 데이터가 셀에서 시작되는 경우A2그런 다음 행에 있는 모든 셀에서 이 공식을 사용하고 동일한 열의 다른 모든 셀에 복사합니다.

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

더 쉬운 방법을 찾았어요Siddarth Rout의 예를 참조하여 열 A에서 고유한 값을 카운트하려면 다음과 같이 하십시오.

  • 새 열 C를 추가하고 C2를 "=1/COUNTIF($A:$A,A2)" 공식으로 채웁니다.
  • 수식을 열의 나머지 부분으로 끕니다.
  • 열 A를 행 레이블로 사용하고 값의 합계 {열 C)를 사용하여 열 A의 고유 값 수를 가져오는 피벗

언급URL : https://stackoverflow.com/questions/11876238/simple-pivot-table-to-count-unique-values