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

Excel & VBA---Brain Training


  • 01

각각의 대리점의 정보가 각각의 시트로 여러장이 구성되어 있다, 다중통합범위 피벗테이블

일반적으로 엑셀에서 피벗을 사용할때
[Microsoft Excel 목록이나 데이타베이스]으로 데이타소스를 사용한다
하지만 아래의 그림과 같이 같은 형식의 테이블이 여러시트에 있을때
이것을 통합하여 하나의 피벗으로 표현을 할 수도 있다
아래 코드로 쌤플시트와 테이블을 만든후
다중통합범위 피벗테이블을 만들어 보시는 자동화를 해보시기를..



Sub createSampleData() Dim iSheet As Integer Dim iRow As Integer Dim sShtName As String Dim rCurrent As Range Dim sProduct As String Dim sSheet() As String On Error Resume Next For iSheet = 1 To 5 With Worksheets.Add sShtName = "Sheet_" & Choose(iSheet, "A", "B", "C", "D", "E") Application.DisplayAlerts = False Worksheets(sShtName).Delete Application.DisplayAlerts = True .Name = sShtName With .Range("A1") .Resize(, 5) = Array("상품", "1분기", "2분기", "3분기", "분기") For iRow = 1 To Int(Rnd() * 10) + 5 With .Offset(iRow) Set rCurrent = .Cells(1) GoTo NO_DUPE BACK: With .Offset(-1, 1).Cells(2).Resize(, 4) .Formula = "=ROUND(INT(RAND()*200000)+50000,-2)" .Value = .Value End With End With Next End With ' 정렬하기 Dim rData As Range Set rData = .UsedRange rData.Sort rData.Cells(1), xlAscending, , , , , , xlYes End With Next Exit Sub NO_DUPE: Do sProduct = Chr(Int(Rnd() * 26) + 65) Loop While Application.CountIf(Range(rCurrent.EntireColumn.Cells(2), rCurrent), sProduct) > 0 rCurrent = sProduct GoTo BACK End Sub

위의 것을 아래의 그림과 같이 피벗으로 통합하기가 코딩하여야할 문제!!



***[LOG-IN]***

  • 01