Skip Navigation Links.
Expand VBAVBA
엑셀프로그래밍이 필요한 이유
Expand ExcelExcel
Expand External LibraryExternal Library
Expand SolutionSolution
Expand EssayEssay

PivotTable

PivotWizard

엑셀의 꽃이라고 하는 피봇테이블을 해보자
도대체 피봇테이블이 뭔가??!!
엑셀의 챠트와 더불어 데이타의 분석을 시각적으로 잘 표현하는 도구이고
잘 사용하면 엑셀이 더더욱 사랑스러워진다
자기가 잘하고 싶은 대상을 잘하고 싶은 방법은 대상을 사랑하면 된다
이제 부터 피봇테이블의 사랑을 시작해 보자
실은 피봇테이블은 이미 자동화가 되어 있는 도구라고 해도 과언이 아니다
VBA를 사용하지 않아도 이미 엑셀내부적으로 자동화시켜놓은 자동화툴이라고
생각하는 것이 좋다

아래와 같은 데이타가 있다
직접 하나,하나 입력을 하였던..
다른 데이타베이스에서 끌어 왔던..
아래와 같은 데이타시트가 있다고 치자(Access에서 쿼리해온것이다)
이런 데이타시트를 그냥 보고를 한답시고 보고서에 복사하여 올린다면
아마도 회사에 오래 있을수 없을 것이다
과연 이런 데이타가 있을때 어떻게 보고서를 만들어서 올려야 할까??
엑셀이 제공하는 분석도구중에는 데이타메뉴의 휠터,부분합,정렬등이
있지만 분석을 반밖에 만족시켜주지 못하는 도구들이다
위의 휠터,부분합,정렬등을 모두 만족시켜주는 하나의 도구가 피봇테이블이다



같은 원시데이타정보를 갖고
다양한 분석보고서를 만들어 내어야 다음 작업을 할수 있다
예를 들어서
실적이 별로 저조한 운송회사는 다음년도에서는 제외시킨다!!
라는 방침이 정해졌을때..
어떻게 결정하여야 할까??
그동안의 어떤 실적이 있다면 판단을 하기 쉬울것이고
그래서 우리는 분석이라는것을 하게되는 하나의 이유가 된다
위의 그동안의 실적인 원시데이타중에서
물건을 주문받으면 물건을 운송해주는(택배회사같은것이겠지..)회사의 실적이
위의 표에 있다
과연 어떤 운송회사들이 있고 어떤 운송회사에서 가장 많은 일을 했고
평균 운송비는 얼마인지등을 알아낼수 있을것이다
휠터기능으로도 할수 있을것지만 번거롭다
VBA를 돌려서 보고서를 만들수도 있다
그러나 피봇테이블이 이런것을 간단하게 처리해준다
간단하게 아래와 같이 해보자



그림에서 보듯이
같은 판매액을 다각적으로 분석해 볼수 있는것이다
각 운송회사별로 운송회수는 몇번??
각 운송회사별로 평균운송운임은 얼마??
각 운송회사별로 총운송비용은 얼마??
더 필드를 추가 시키면서 다양한 제공되는 함수
부분합에서 사용하였던 함수들을 사용할수 있는것이다
또한 백분율로 각값의 구성비를 따져볼수도 있는것이고..
마우스만 슬슬 움직이면서 하면 되는 자동도구인것이다
이만 해도 되는데 VBA는 뭐 필요없겠네??!!
매뉴얼로 만든 내용을 보면 아래와 같다??



위와 같이 한 내용을 매크로로 기록하면 아래와 같이 된다

Sub Macro1() ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,SourceData:= _ "Datas!R1C1:R2160C8").CreatePivotTable tabledestination:="", _ tablename:="피벗 테이블1",DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard tabledestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select ActiveWorkbook.ShowPivotTableFieldList = True With ActiveSheet.PivotTables("피벗 테이블1").PivotFields("운송회사") .Orientation = xlRowField .Position = 1 End With ActiveSheet.PivotTables("피벗 테이블1"). _ AddDataField ActiveSheet.PivotTables( _ "피벗 테이블1").PivotFields("판매액"), _ "합계 : 판매액", xlSum ActiveSheet.PivotTables("피벗 테이블1"). _ AddDataField ActiveSheet.PivotTables( _ "피벗 테이블1").PivotFields("판매액"), _ "합계 : 판매액2", xlSum ActiveSheet.PivotTables("피벗 테이블1"). _ AddDataField ActiveSheet.PivotTables( _ "피벗 테이블1").PivotFields("판매액"), _ "합계 : 판매액3", xlSum Range("B4").Select With ActiveSheet.PivotTables("피벗 테이블1"). _ PivotFields("합계 : 판매액") .Caption = "운송회수 " .Function = xlCount End With Range("B5").Select ActiveSheet.PivotTables("피벗 테이블1"). _ PivotFields("합계 : 판매액2").Caption = "총운송비" Range("B6").Select With ActiveSheet.PivotTables("피벗 테이블1"). _ PivotFields("합계 : 판매액3") .Caption = "평균1회운송비" .Function = xlAverage End With Range("C3").Select ActiveSheet.PivotTables("피벗 테이블1"). _ PivotSelect "'Row Grand Total'", _ xlDataAndLabel, True Selection.NumberFormatLocal = "#,##0_ " ActiveWorkbook.ShowPivotTableFieldList = False Application.CommandBars("PivotTable").Visible = False End Sub

위와 같이 PivotTable오브젝트와 관련 하위오브젝트의 이름을 모른다면
매크로기록기를 사용하면 알수 있다
그래서 매크로기록기는 초보님들에게 아주 편리한 학습도구이고
또한 고수님들에게도 좋은 편리하게 코딩을 도와주는 도구이다
그러나 위와 같이 되었을때 이것을 적절히 편집하고 응용할줄 알아야 한다
다음 화일에서 그것을 해보도록 하자


PivotTable_001.