1. 아별툴
  2. 아별툴 패밀리
  3. 엑셀 질문하기
  4. 엑셀 강좌
  5. 엑셀 팁
  6. 엑셀 자료실
  7. 엑셀 연구과제
  8. 엑셀 북마크
  9. 관련 프로그램 소개


출처 : 아별닷컴

 

 피벗테이블의 요소별 영역을 선택하는 것들을 따로 정리해봤습니다.

피벗테이블을 VBA로 컨트롤 하고 싶으신 분들은 참고하세요.

updated 2010.02.24 22:09 by abyul.com


'피벗테이블의 행부분을 선택한다.
? ActiveSheet.PivotTables(1).RowRange.select

'피벗테이블의 열부분을 선택한다.
? ActiveSheet.PivotTables(1).ColumnRange.select

'피벗테이블의 페이지필드를 선택한다.
? ActiveSheet.PivotTables(1).PageRange.Select

'피벗테이블의 데이터 영역부분을 선택한다.
? ActiveSheet.PivotTables(1).DataBodyRange.select

'피벗테이블의 데이터필드들의 이름목록을 선택한다.
? ActiveSheet.PivotTables(1).DataLabelRange.select

'피벗테이블에서 페이지필드를 제외하고 모두 선택한다.
? ActiveSheet.PivotTables(1).TableRange1.Select

'피벗테이블에서 페이지필드를 포함해 전부 선택한다.
? ActiveSheet.PivotTables(1).TableRange2.Select


'피벗테이블 행부분이 있는 영역을 전부 선택
? ActiveSheet.PivotTables(1).TableRange1.Resize(ActiveSheet.PivotTables(1).ColumnRange.Rows.Count).Select



 

'아래 내용들은 본인이 직접 VBA창(Alt+F11)의 실행창(Ctrl+G)에서 확인해본 내용이다.
'그래서 변수값을 확인할때면.. 앞에 ? 가 붙는다. (?대신에 print나 debug.print를 해도 결과는 같다.)
'아래 내용의 확인 시간은 2008.12.19 00:24 AM 이다. 


 '피벗테이블의 행부분을 선택한다.
? ActiveSheet.PivotTables(1).RowRange.select
'피벗테이블의 행 항목 중 첫번째 항목의 이름을 갖고 온다.
? ActiveSheet.PivotTables(1).RowFields(1).name

'피벗테이블의 열부분을 선택한다.
? ActiveSheet.PivotTables(1).ColumnRange.select
'피벗테이블의 열 항목 중 첫번째 항목의 첫번째 아이템의 값을 갖고 온다.
? ActiveSheet.PivotTables(1).ColumnFields(1).PivotItems(1).value

'피벗테이블의 데이터 영역부분을 선택한다.
? ActiveSheet.PivotTables(1).DataBodyRange.select
'피벗테이블의 데이터 항목의 총 개수를 갖고 온다.
? ActiveSheet.PivotTables(1).DataFields.COUNT
'피벗테이블의 데이터 항목 중 2번째 항목의 이름을 갖고 온다.
? ActiveSheet.PivotTables(1).DataFields(2).name

'피벗테이블의 피벗필드의 개수를 갖고 온다.
'기본적으로 원본데이터의 필드명을 차례로 갖고 오고, 뒤쪽 배열엔 데이터 항목이 들어간다.
? ActiveSheet.PivotTables(1).PivotFields.count
'피벗테이블의 피벗필드 중 10번째 항목의 이름을 갖고 온다.
? ActiveSheet.PivotTables(1).PivotFields(10).name

'피벗테이블의 첫번째 데이터 필드 항목의 함수를 합계로 지정해준다.
ActiveSheet.PivotTables(1).DataFields(1).Function = xlSum
'피벗테이블의 첫번째 데이터 필드 항목의 서식을 숫자 서식으로 변경해준다.
ActiveSheet.PivotTables(1).DataFields(1).NumberFormat = "_-* #,##0_-;[RED]_-* -* #,##0_-;_-* -_-;_-@_-"


'행항목들의 총합계 부분이 있는지 여부를 확인할때..
? ActiveSheet.PivotTables(1).ColumnGrand
'열항목의 총합계의 이름을 갖고 올때.. 보통은 "총합계"
? ActiveSheet.PivotTables(1).GrandTotalName
'열의 총합계 부분을 선택하고 싶을때
ActiveSheet.PivotTables(1).PivotSelect "Column Grand Total", xlDataAndLabel, True
'선택한 부분합을 제거한다.
selection.delete
'다른 방법으로는 아래와 같이 하면, 부분합이 취소된다.
ActiveSheet.PivotTables(1).ColumnGrand = False
'다시 열의 총합계를 설정하는 방법은 아래와 같다.
ActiveSheet.PivotTables(1).ColumnGrand = True


'행항목의 부분합이 설정되어 있는지 확인하는 방법은 아래와 같다.
? ActiveSheet.PivotTables(1).PivotFields(1).Subtotals(1)
'행항목의 부분합 부분을 선택한다.
ActiveSheet.PivotTables(1).PivotSelect ActiveSheet.PivotTables(1).RowFields(1).name + "[All;Total]", xlDataAndLabel, True
'선택한 부분합을 제거한다.
selection.delete
'다른 방법으로는 아래와 같이 하면, 부분합이 취소된다.
ActiveSheet.PivotTables(1).PivotFields(1).Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
'좀더 간단하게 부분합을 제거하는 방법은 아래와 같다.
ActiveSheet.PivotTables(1).PivotFields(1).Subtotals(1) = False
'참고로, 다시 부분합을 설정하는 방법은 아래와 같다.
ActiveSheet.PivotTables(1).PivotFields(1).Subtotals = Array(True, False, False, False, False, False, False, False, False, False, False, False)

'위 양식은 아래와 같은 의미임. 첫번째엔 True가 있어야 하고.. 나머지는 필요에 따라서.. 합계나 개수, 평균등 입맛에 맞게 True로 설정해주면 된다.
ActiveSheet.PivotTables(1).PivotFields(1).Subtotals = Array(자동합계여부,합계,개수,평균,최대값,최소값,곱,숫자 개수,표본 표준 편차,표준 편차,표본 분산,분산)


'피벗테이블의 행레이블과 데이터 영역까지 선택하기.. 이게 영역 설정시 가장 많이 사용할 듯..
Range(ActiveSheet.PivotTables(1).DataBodyRange, ActiveSheet.PivotTables(1).RowRange).select
'열 첫번째 항목의 레이블과 데이터 영역을 모두 선택하기
ActiveSheet.PivotTables(1).PivotSelect ActiveSheet.PivotTables(1).ColumnFields(1).Name + "[All]", xlDataAndLabel, True
'열 첫번째 항목의 레이블만 선택하기
ActiveSheet.PivotTables(1).PivotSelect ActiveSheet.PivotTables(1).ColumnFields(1).Name + "[All]", xlLabelOnly, True
'열 첫번째 항목의 데이터 영역만 선택하기
ActiveSheet.PivotTables(1).PivotSelect ActiveSheet.PivotTables(1).ColumnFields(1).Name + "[All]", xlDataOnly, True
'행 첫번째 항목의 레이블과 데이터 영역을 모두 선택하기
ActiveSheet.PivotTables(1).PivotSelect ActiveSheet.PivotTables(1).RowFields(1).Name + "[All]", xlDataAndLabel, True

'행필드를 제거하기
ActiveSheet.PivotTables(1).rowFields(1).Orientation = xlHidden
'열필드를 제거하기
ActiveSheet.PivotTables(1).columnFields(1).Orientation = xlHidden
'데이터필드를 제거하기
ActiveSheet.PivotTables(1).dataFields(1).Orientation = xlHidden

'데이터 필드에 "입고"필드를 합계로 만들어서 추가하기
ActiveSheet.PivotTables(1).AddColumnField ActiveSheet.PivotTables(1).PivotFields("입고"), " 입고", xlSum
'행필드에 "입고"필드 추가하기
ActiveSheet.PivotTables(1).PivotFields("입고").Orientation = xlRowField
'열필드에 "입고"필드 추가하기
ActiveSheet.PivotTables(1).PivotFields("입고").Orientation = xlColumnField





데이터 영역의 필드명과 열 컬럼의 레이블 부분만 선택하는 코드..
ActiveSheet.PivotTables(1).PivotSelect ActiveSheet.PivotTables(1).ColumnFields(ActiveSheet.PivotTables(1).ColumnFields.count).Name + "[All]", xlDataAndLabel, True

ActiveSheet.PivotTables(1)을 p로 대체하면 아래와 같다.

Dim p as PivotTable
set p = ActiveSheet.PivotTables(1)
p.PivotSelect p.ColumnFields(p.ColumnFields.count).Name + "[All]", xlDataAndLabel, True





출처 : 엑사모
Range속성 중에 Group속성을 이용하면, 기간단위로 그룹핑이 가능하다.. +_+;;
ActiveSheet.Range("F6").Group Start:=True, End:=True, Periods:=Array(True, True, True, True, True, True, True)
위 코드에서 Periods:=Array(True, True, True, True, True, True, True) 부분이 중요한데,
각 배열 요소들의 의미는 아래와 같다.
Periods:=Array(초,분,시,일,월,분기,년)
년, 분기, 월단위로 묶으려면 아래와 같이 하면 된다.
ActiveSheet.Range("F6").Group Start:=True, End:=True, Periods:=Array(False, False, False, False, True, True, True)

'Date를 반기,분기,월로 묶는방법을.. 코딩 한줄로. +_+;;
'밑의 빨간색 라인을 주목할 것! +_+;;;;

 Sub Pivote()

Dim PV As PivotCache
Dim PVT As PivotTable

Dim RngDATA As Range
Dim RngTo As Range

With Sheets("Sheet1")

    Set RngDATA = .Range("A1").CurrentRegion '피벗테이블의 데이터 범위
    Set RngTo = .Range("F5") '현재 시트에 붙여 넣을 범위
   
    Set PV = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=RngDATA)
    Set PVT = PV.CreatePivotTable(TableDestination:=RngTo, TableName:="PivoteName1")
        'TableDestination:="" 이면 시트를 새로 생성한다.

    With PVT
         .PivotFields("Date").Orientation = xlRowField
         .PivotFields("Date").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
         .PivotFields("Branch").Orientation = xlRowField
         .PivotFields("Date").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
         .PivotFields("BrandName").Orientation = xlPageField
         .PivotFields("Sales_AMT").Orientation = xlDataField
    End With
   .Range("F6").Group Start:=True, End:=True, Periods:=Array(False, False, False, False, True, True, False)
End With

End Sub


'피벗테이블 생성시 바로 Period를 그룹핑할 수 있다.
    ActiveSheet.PivotTables("피벗 테이블1").PivotFields("건수").Orientation = xlDataField
    Range("c4").Group Start:=True, End:=True, Periods:=Array(False, False, False, _
        False, True, False, False) '피벗그룹설정



문서 첨부 제한 : 0Byte/ 2.00MB
파일 제한 크기 : 2.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 기타 엑셀 VBA 간단한 팁 모아놓기.. +_+ [레벨:30]아별 2007-01-24 33940
44 기타 엑셀 기본 제공 대화 상자 인수 목록 file [레벨:30]아별 2009-11-04 8017
43 엑셀2007에서 셀의 색상을 RGB로 뽑아내기 file [레벨:30]아별 2009-10-06 10227
42 [VBA팁] 화일이 존재하는지 확인하기 [레벨:30]아별 2009-07-31 8030
41 엑셀에서 사용하는 언어 확인하기. file [1] [레벨:30]아별 2009-06-03 13807
40 메시지 박스 대용으로 Shape 사용하기 file [레벨:30]아별 2009-05-07 16070
39 유저폼 크기 조절 가능하게 만들기 file [레벨:30]아별 2009-05-07 5845
38 스스로 사라지는 메시지 박스 file [1] [레벨:30]아별 2009-05-07 5609
37 마우스 좌표를 반환 받기 file [레벨:30]아별 2009-05-07 5823
36 [펌] Excel Macro(VBA) 입문자를 위한 소개자료 image [레벨:30]아별 2008-12-19 6655
» 기타 [Excel VBA] 피벗테이블(PivotTable)을 VBA로 컨트롤해보자.. [레벨:30]아별 2008-12-19 12162
34 [펌] 엑셀로 최대 공약수 구하기 [2] [레벨:30]아별 2008-12-18 5283
33 바로 옆셀의 메모값 가져 오기 [1] [레벨:30]아별 2008-10-20 5494
32 [엑셀VBA] ERROR CODE file [레벨:30]아별 2008-08-28 7384
31 [엑셀VBA] 자동필터를 매크로로 구현하기 [레벨:30]아별 2008-08-28 11256
30 [VBA] 전역변수 설정하기. Public 문, Private 문 imagefile [레벨:30]아별 2008-07-01 14070
29 [엑셀VBA] 네이버 지식인 답변 _ 엑셀 쿼리를 이용해서 펀드 기준가 데이터를 읽어오기. file [레벨:30]아별 2008-04-30 9150
28 엑셀 추가 기능 만들기 [레벨:30]a☆ 2006-01-19 7347
27 메모 입력할때 사용자 이름 제거하고 입력하기.. [레벨:30]a☆ 2006-01-19 5410
26 시트에서 콤보박스 활용하기 file [레벨:30]a☆ 2005-11-12 16749