2014-09-23 1 views
1

누군가 올바른 방향으로 나를 가리킬 수 있는지 궁금합니다. 아래에 200,000 개의 행이있는 스프레드 시트가 있습니다. 내가 피벗 테이블이 이상적인 솔루션되었을 수 있습니다 생각이Excel 데이터 요약 텍스트 값 - 피벗 테이블과 유사

Area Code   Table   Chair   Bookcase   Shelf 
1     1    2    3,7 
2     4              5 
3         3,8 

을 달성하기 위해 노력하고

Part Number  Areacode   Description 
1     1     Table 
2     1     Chair 
3     1     Bookcase 
7     1     Bookcase 
4     2     Table 
5     2     Shelf 
6     3     Chair 
8     3     Chair 

(부품 번호는 숫자입니다)하지만이 시도하고 불행하게도 나는 그것이 볼 수 없습니다 실제 텍스트 값을 합계 영역에 추가 할 수 있습니다. 나는 앞으로의 유일한 길은 어떤 종류의 매크로라고 추측하고 있습니까? 누군가가 내가 작업을 완료 한

+0

I 다운로드 및 설치 Ablebits 내가 지금 지역 코드가 내 기본 테이블에서 지역 코드를 기반으로 부품 번호를 수 있도록 연결할 수있었습니다 행을 결합 3. 부품 번호 = 3, 8 설명 = 의자하지만, 나는 아직도 어떻게 든 보고서와 같은 피벗에 나타나게해야합니다. – Emma

+0

빠른 방법이 있나요? – Emma

답변

1

어떤 아이디어를 가지고 있지만 내가 이것을 달성하기 위해 빠른 방법이 될 수있다 확신하는 경우

2개월은에 아직도이 사람의 도움이 필요합니다. 해결 방법은 Ablebits Combine Rows 프로그램을 https://www.ablebits.com/

에서 다운로드하는 것이 었습니다. 이렇게하면 지역 번호에 따라 부품 번호를 연결할 수있게되었으므로 이제는 지역 번호 3에 대한 주 테이블에 부품 번호 = 3, 8 및 설명 = Chair

그런 다음 새로운 열을 삽입하고 모든 것에 고유 한 번호 식별자를 부여했습니다.

그 후 피벗 테이블을 실행하여 지역 코드를 수직 값으로, 설명을 수평 값으로, 계산 필드에서이를 새로운 고유 식별자 필드 및 최소값으로 설정합니다. 최대 또는 제품.

피벗 테이블을 복사하여 새로운 시트에 붙여 넣은 다음 각 고유 식별자를 조회하여 실제 부품 번호를 텍스트 값으로 가져 왔습니다. 이것은 70 개의 VLookups가 필요했기 때문에 시간이 많이 걸리는 비트였습니다.

나는 이것을하는 더 빠른 방법을 듣는 것에 여전히 관심이 있습니다.

감사합니다.

+0

아무도 아이디어가 있다면이 녀석들에게 도움이 필요합니다 – Emma

+0

아이디어가 있습니까? 나는 아직도 이것에 대한 도움이 필요하다. 내가 생각할 수있는 유일한 방법은 70 가지의 룩업도있다. 그러나 그것은 끔찍한 해결책이다. 특히 내 Excel에 350,000 개의 레코드가있는 경우 – hamish

0
Sub Tester() 
    Dim rngIn, rngOut 

    Set rngIn = Sheets("Data") 
    Set rngOut = Sheets("Pivoted") 

    rngOut.CurrentRegion.ClearContents 

    PivotRange rngIn, 2, 3, 1, rngOut 
End Sub 


Function PivotRange(rngIn, rowCol, catCol, valCol, rngOut) 
    Dim dictRows, dictCols, r, nR, nC, arr, kR, kC 

    Set dictRows = CreateObject("scripting.dictionary") 
    Set dictCols = CreateObject("scripting.dictionary") 

    arr = rngIn.Value 

    Application.ScreenUpdating = False 
    rngOut.Value = arr(1, rowCol) 'row header 

    For r = 2 To UBound(arr, 1) 'skip column headers 
     kR = arr(r, rowCol) 
     kC = arr(r, catCol) 
     If Not dictRows.exists(kR) Then 
      nR = nR + 1 
      dictRows.Add kR, nR 
      rngOut.Offset(nR, 0).Value = kR 
     End If 
     If Not dictCols.exists(kC) Then 
      nC = nC + 1 
      dictCols.Add kC, nC 
      rngOut.Offset(0, nC).Value = kC 
     End If 
     With rngOut.Offset(dictRows(kR), dictCols(kC)) 
      .Value = .Value & IIf(.Value <> "", ",", "") & arr(r, valCol) 
     End With 
    Next r 

End Function