레이블 그룹화 및 텍스트 값 연결 (피벗 테이블 등)


22

다음과 같은 데이터가 포함 된 스프레드 시트가 있습니다.

제품 | 속성
---------- + ----------
제품 A | 청록
제품 B | 청록
제품 C | 청록
제품 A | 마젠타
제품 C | 마젠타
제품 B | 노랑
제품 C | 노랑
제품 A | 검은
제품 B | 검은

내가 열 A로 모든 것을 그룹화하고 열 B를 공통적으로 열 A를 공유하는 쉼표로 구분 된 값 목록으로 만들고 싶습니다.

제품 | 속성
---------- + --------------------------
제품 A | 시안, 마젠타, 블랙
제품 B | 시안, 옐로우, 블랙
제품 C | 청록색, 마젠타, 노랑, 검정

불행하게도 피벗 테이블은 숫자 값으로 작업하는 방법 만 알고 있으며, 가장 멀리 갈수록 열 A가 발생하는 횟수를 세는 것입니다.

필자는 궁극적으로 데이터를 MySQL 데이터베이스로 가져오고 절이 GROUP_CONCAT(Attribute)있는 쿼리에서 MySQL의 기능을 사용 하여이 GROUP BY Product문제를 해결할 수 있었지만 Excel 솔루션을 알아 내려고 책상에 머리를 반복적으로 부딪힌 후.

나중에 참조 할 수 있도록 매크로가없는 Excel에서 이것이 가능합니까? 그것이 있든 없든, 어떻게 이것을 뽑을 것인가?

답변:


31
   |     A     |     B
---+-----------+-----------
 1 |  PRODUCT  | ATTRIBUTE
 2 | Product A | Cyan
 3 | Product B | Cyan
 4 | Product C | Cyan
 5 | Product A | Magenta
 6 | Product C | Magenta
 7 | Product B | Yellow
 8 | Product C | Yellow
 9 | Product A | Black
10 | Product B | Black

행 1 : 1이 헤더 행이라고 가정합니다.

  1. 제품별로 그룹화하려면 열 A를 기준으로 정렬

  2. 다음 공식에 C2를 입력하여 C 열에 쉼표로 구분 된 형식으로 데이터를 준비 하고 C3 : C10으로 복사하십시오.

    =IF(A2<>A1, B2, C1 & "," & B2)
    
  3. D2를 입력하여 유용한 행식별=A2<>A3 하고 D3 : D10으로 복사하십시오.

  4. 복사 열 C : D는 다음 붙여 넣기를 값으로 ( AltE- S- V- Enter). 이제 얻을 것이다 :

    Product A    Cyan       Cyan                   FALSE
    Product A    Magenta    Cyan,Magenta           FALSE
    Product A    Black      Cyan,Magenta,Black     TRUE
    Product B    Cyan       Cyan                   FALSE
    Product B    Yellow     Cyan,Yellow            FALSE
    Product B    Black      Cyan,Yellow,Black      TRUE
    Product C    Cyan       Cyan                   FALSE
    Product C    Magenta    Cyan,Magenta           FALSE
    Product C    Yellow     Cyan,Magenta,Yellow    TRUE
    
  5. FALSE자동 필터를 사용하여 D 열에서 필터링 하여 쓸모없는 행제거한 다음 해당 행을 삭제하십시오.

  6. 마침 . A 열과 C 열이 필요합니다.


1
그것은 당신의 상상력을 사용하고 있습니다! 축하합니다!
jorgebg

이 기능이 작동하는 동안 2012 년 이후 시간이 변경되었습니다. 아래에서 PowerQuery 추가 기능 (Excel 2016에 기본 제공)을 사용하는 새로운 답변을 찾으십시오. 더 쉬울 수 없었습니다. 글쎄, 컴퓨터와 대화하고 "내 데이터를 그룹화!" 아마 6 년 후에
ripvlan

11

나는 그것이 오래된 게시물이라는 것을 알고 있지만 오늘이 도전을 받았습니다. Microsoft 의 PowerQuery 추가 기능을 사용했습니다 (참고 : 기본적으로 Excel 2016에 기본 제공됨).

  1. 테이블을 선택하세요
  2. POWER QUERY 탭 (또는 2016 년의 DATA)에서 "From Table"을 선택하십시오.
  3. "제품"열을 클릭하십시오
  4. 변환 탭에서 "그룹화 기준"을 선택하십시오.
  5. 보기 탭에서 "수식 막대"가 선택되어 있는지 확인하십시오
  6. 공식 변경

    에서:

    = Table.Group(#"Changed Type", {"Product"}, {{"Count", each Table.RowCount(_), type number}})
    

    에:

    = Table.Group(#"Changed Type", {"Product"}, {{"Attributes", each Text.Combine([Attribute], ", "), type text}})
    

    위의 단계를 묘사 한 그림을 보려면 여기를 클릭하십시오.

6 단계는 Power Query (M) 수식을 활용하여 UI에서 제공되는 기본 작업을 통해 노출되지 않은 데이터 조작을 수행합니다. Microsoft는 Power Query에서 사용할 수있는 모든 고급 기능에 대한 온라인 참조를 제공합니다.


아마도 가장 우아한 솔루션 일 것입니다.
asdmin

@ matt poland,이 멋진 속임수를 사용하여 줄을 따라 중복 값을 제거하는 방법을 알고 있는지 궁금합니다.
Lana B

1 단계 (테이블 선택 후)에서 리본의 데이터 탭으로 이동하여 "중복 제거"를 클릭 할 수 있습니다.
Matt Poland

원래 테이블을 변경하지 않으려는 경우 파워 쿼리 내에 다른 옵션이 있습니다. 2 단계 후에 CTRL을 누른 상태에서 두 열을 모두 클릭하여 둘 다 선택할 수 있습니다. 그런 다음 열 중 하나를 마우스 오른쪽 버튼으로 클릭하고 "중복 제거"를 선택하십시오. 그런 다음 3 단계로 진행하십시오.
Matt Poland

감사합니다! 이것이 가장 좋은 대답입니다. Excel 2016을 사용하는 사용자를 위해 PowerQuery가 내장되어 있습니다. 데이터 탭을 누른 다음 "데이터 가져 오기 및 변환"섹션에서 "테이블 / 범위에서"를 누르십시오. Power Query Editor가 열리면보기 탭을 누르고 수식 표시 줄을 활성화하십시오. 나머지 지침은 그대로 작동합니다.
ripvlan

3

다음은 "비 매크로"라는 두 가지 접근 방식입니다.

  1. 작은 데이터 세트를 사용하면 먼저 제품별로 분류 한 후 (GROUP BY 제품과 유사) 먼저 "제품"열을 복사하여 다른 곳에 붙여 넣은 다음 중복을 제거 할 수 있습니다. 그런 다음 각 제품의 "속성"을 복사하고 각 제품 옆에 "특별한 TRANSPOSE 붙여 넣기"를 복사하십시오. 그런 다음 최종 결과 열에서 각각의 조옮김 속성과 쉼표를 연결하십시오. 제품 목록이 길면이 "복사 / 붙여 넣기 특수 / 트랜지션"이 모두 빨리 오래 될 것입니다.

  2. 많은 양의 데이터가있는 경우 몇 가지 수식을 사용하면 아래와 같이 최종 결과를 얻을 수 있습니다. F2, G2, H2, I2 및 N2의 공식은 파란색 화살표로 표시됩니다. 필요에 따라 아래 행에 복사하십시오. J2 : L2는 I2와 동일한 공식을 사용합니다. 또한 F2 공식은 A : A 범위에 걸쳐있는 명명 된 범위 "Products"를 나타냅니다.

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


비록 당신이 말하는 것처럼 데이터 세트가 작을 때만 좋은 해결책입니다. 감사!
p0lar_bear
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.