2010-12-08 5 views
3

Excel에서 쉼표로 구분 된 값을 생성하는 방법이 있습니까 (피벗 테이블을 사용하는 것이 가장 좋음)?Excel에서 쉼표로 구분 된 값을 만듭니다 (피벗 테이블 사용)?

Object Color 
foo Red 
foo Blue 
bar Red 
bar Blue 
bar Green 
baz Yellow

나는 다음과 같은 테이블을 좀하고 싶습니다 :

Object Count of Color Colors 
foo  2    Red,Blue 
bar  3    Red,Blue,Green 
baz  1    Yellow

Excel에서이 가능 다음과 같은 데이터를 고려? 데이터는 SQL 쿼리에서 나오므로 재귀 CTE를 사용하여 UDF를 작성하여 계산할 수는 있지만 이는 단일 임시 쿼리에 대한 것이 었습니다. 그리고 나는 비정규 화 된 데이터를 얻는 빠르고 쉬운 방법을 원했습니다. 결국, UDF를 작성하는 것보다 게시하는 것이 더 길지만 ...

+1

훨씬 간단한 해결책 : http://superuser.com/questions/249437/excel-pivot-values-in-one-cell-as-comma- 여기에 분리 된 값 – yioann

+1

훨씬 간단한 해결책 : http://superuser.com/questions/249437/excel-pivot-values-in-one-cell-as-comma-separated-value – yioann

+0

@yioann 감사합니다!이것을 답변으로 게시하면 해결 방법으로 표시됩니다. –

답변

4

여기를 지적 @yioannthis superuser answer (HT에서 적응 훨씬 간단한 대답은, 그리고 @F106dart) :

가정 데이터를 컬럼에 A (범주) 및 B (값) :

  1. 새 열 (C)을 만들고 이름을 "값"으로 지정합니다. =IF(A2=A1, C1&","&B2, B2)
  2. 두 번째 새 열 (D)를 작성하고 "카운트"이름 : C2 셀부터 아래로 모든 방법을 복사 공식을 사용합니다. D2 셀에서 시작하여 아래로 모든 방법을 복사 공식을 사용합니다 : "마지막 줄에"=IF(A2=A1, D1+1, 1)
  3. 제 3 새 열 (E)를 작성하고 이름을 지정합니다. E2 셀에서 시작, 아래 방법을 모두 복사하여이 fomula을 사용 =A2<>A3

이제에만 TRUE 값을 열 B (값) 및 필터 열 E (? 마지막 선)을 숨길 수 있습니다. 요약

:

A   B  C      D     E 
+--------- ----- ----------------------- ------------------- ---------- 
1| Category Value Values     Count    Last Line? 
2| foo  Red =IF(A2=A1,C1&","&B2,B2) =IF(A2=A1, D1+1, 1) =A2<>A3 
3| foo  Blue =IF(A3=A2,C2&","&B3,B3) =IF(A3=A2, D2+1, 1) =A3<>A2 
etc. 
0

예, 실행중인 RDBMS (MS SQL, MySQL 등) 도구를 사용하는 것이 훨씬 낫습니다.).

Excel에서 이러한 피벗 테이블은 가능입니다. 그러나, 당신이 성가신 VBA 모듈을 작성하는 경우에만 - 나는 그것을 권장하지 않습니다.

그러나 MS Access에서는 일반적으로 Excel에 번들로 제공되는 작업이 더 간단합니다. Microsoft는 Access와 Excel을 연결하고 후자를 사용하여 후자에 대한 쿼리를 실행하는 것을 "쉽게"합니다.
그래서, 언급 한 바와 같이 스프레드 시트 셀을 제공 :

  1. 최상의 결과를 얻으려면, Color에 의해 다음 Object으로 테이블을 정렬합니다.

  2. 스프레드 시트가 저장되어 있는지 확인하십시오.

  3. MS Access를여십시오.

  4. 선택 파일 -> 열기 (Ctrl 키O)

  5. 유형의 파일 아래에 Microsoft Excel에서

  6. 이동을 선택하고 선택하여 기존 스프레드 시트.

  7. 테이블이 포함 된 워크 시트 또는 명명 된 범위를 선택하십시오.

  8. 연결된 테이블에 MyPivot이라는 이름을 지정하십시오.

  9. Visual Basic Editor를 엽니 다.도구 -> 매크로 -> VBA 편집기 (Alt 키F11)

  10. 이 UDF에 모듈을 삽입하여 붙여 넣기 :

    'Concat returns a comma-seperated list of items 
    Public Function Concat (CategoryCol As String, _ 
             ItemCol  As String) As String 
        Static LastCategory As String 
        Static ItemList  As String 
    
        If CategoryCol  = LastCategory Then 
         ItemList  = ItemList & ", " & ItemCol 
        Else 
         LastCategory = CategoryCol 
         ItemList  = ItemCol 
        End If 
        Concat = ItemList 
    End Function 
    


  11. 저장 프로젝트를 닫고 VB 편집기를 닫습니다.

  12. 쿼리, 디자인보기에서 새 쿼리를 만듭니다.

  13. SQL보기으로 전환하십시오. 이 SQL에서

  14. 붙여 넣기 :

    SELECT 
        Object, 
        COUNT (Color)     AS [Count of Color], 
        LAST (Concat (Object, Color)) AS [List 'O Colors] 
    FROM 
        MyPivot 
    GROUP BY 
        Object 
    


  15. 쿼리를 실행 (눌러 빨간색 느낌표 또는 그냥 데이터 시트보기를 선택).

  16. 보라, 15 단계로 쉽게 완료! ;)
    결과 : 원본에 대한

    Object Count of Color List 'O Colors 
    bar    3  Blue, Green, Red 
    baz    1  Yellow 
    foo    2  Blue, Red 
    
+0

와우, 그건 강렬했다. 필자는 여유 시간을 가지면 UDF로 OP를 편집하여 SQL에서 동일한 작업을 수행합니다. 답변 해주셔서 감사합니다! –

관련 문제