2014-04-02 4 views
0

큰 데이터베이스가 포함 된 통합 문서가 하나 있습니다.피벗 테이블 데이터 원본

내가 부서에 따라 데이터를 정렬 코드를 만든

(이 Basefile.xlsm를 호출 할 수 있습니다), 그리고 일부 사전 기존 피벗 테이블을 업데이트하려면이 옵션을 사용합니다.

피벗 테이블과 정렬 된 데이터는 각 부서마다 별도의 파일로 저장됩니다.

(이 Department1.xls, Department2.xls 등으로 불림).

제 문제는 각 새 파일의 피벗 테이블이 새 파일이 아니라 원래 통합 문서를 계속 참조한다는 것입니다.

(그래서 Department1.xls에서 피벗 테이블 Department1.xls의 시트에서 데이터를 얻을해야하지만 현재 모든 피벗 테이블 여전히 데이터 소스로 Basefile.xlsm 사용)

는 방법이 있나요 이 문제를 해결하려면? - 모든 피벗 테이블을 코드로 만들지 않고?

Sub Selectdata() 


    Application.ScreenUpdating = False2 



' filters for nivå2 enhet, cuts and pastes data into a sheet named after nivå2 - ready for creating pivot table 

Dim i As Integer 
Dim WS As Worksheet 

For i = Worksheets("Department").Range("g4").Value To Worksheets("Department").Range("h4").Value 

Sheets("Basefile 2014").Select 
ActiveSheet.Range("A:O").AutoFilter Field:=15, Criteria1:= _ 
    Worksheets("Department").Range("b" & i).Value 

Cells.Select 
Range("A29619").Activate 
Selection.Copy 
Sheets("Metode").Select 
Set WS = Sheets.Add 
ActiveSheet.Paste 
WS.Name = "RawData 2014" 

'shows all the data in the new worksheet 
WS.Select 
ActiveSheet.Range("A:O").AutoFilter Field:=15 
    Columns("l:l").Select 

' repeats proceedure for 2013 
Sheets("Basefile 2013").Select 
ActiveSheet.Range("A:O").AutoFilter Field:=15, Criteria1:= _ 
Worksheets("Department").Range("b" & i).Value 
Cells.Select 
Range("A29619").Activate 
Selection.Copy 
Sheets("Metode").Select 
Set WSD = Sheets.Add 
ActiveSheet.Paste 
WSD.Name = "RawData 2013" 

'shows all the data in the new worksheet 
WSD.Select 
ActiveSheet.Range("A:O").AutoFilter Field:=15 
    Columns("l:l").Select 

'Refreshes all the pivot table data 
ActiveWorkbook.RefreshAll 

Application.ScreenUpdating = True 

Filename = Worksheets("Department").Range("c" & i).Value & "2014" 
Fname = Worksheets("Department").Range("c" & i).Value & "2013" 


Sheets(Array("Funn 2013", "Pivot 2013", "RawData 2013")).Copy 

With ActiveWorkbook 
.SaveAs "F:\X Simulation\test\" & Fname 
.Close 
End With 


Sheets(Array("Pivot 1.", "Pivot 2.", "Pivot 3.", "Pivot 4.", "Funn 2014", "RawData 2014")).Copy 



With ActiveWorkbook 
.SaveAs "F:\X Simulation\test\" & Filename 
.Close 
End With 

Application.DisplayAlerts = False 
Worksheets("RawData 2014").Delete 
Worksheets("RawData 2013").Delete 
Application.DisplayAlerts = True 


Next i 

End Sub 

답변

0

피벗 테이블의 SourceData 속성을 변경하면 가능합니다.

Worksheets("PivotTable").PivotTables(1).SourceData = Worksheets("SourceData").Range("A1:Z999").Address 

워크 시트 매개 변수와 소스 데이터가 제공되는 데이터 범위를 편집해야합니다.

또한 매크로 기록와 함께, 귀하의 Department1.xls 시트에 피벗 테이블의 소스를 편집, 즉을 적절한 단계를 기록하고 생산 어떤 코드를 볼 수 있었다.

관련 문제