- http://cafe.naver.com/excelmaster/131866
피벗테이블의 기본기능을 이용하면 쉽게 풀리는 예제
꼭 매크로로 할 것도 없이
텍스트파일을 불러온 후 피벗을 새로고침해도 되는 일이다.
아직 피벗에 약해서. 하나하나 뜯어봄
자세한 것은 주석 참고
텍스트파일을 불러올 때 한줄씩 셀에 출력하다보니 속도에 문제가...
일단 피벗에 초점을 두고..ㅋㅎ
Sub LoadTextFile() Dim strFilter As String Dim strFile As Variant Dim i As Integer Dim v As Variant Dim Line As String '변수설정 ActiveSheet.UsedRange.Clear ChDir ThisWorkbook.Path strFilter = "텍스트파일 (*.txt), *.txt" strFile = Application.GetOpenFilename(FileFilter:=strFilter, Title:="파일 선택", MultiSelect:=False) '파일선택 취소하면 매크로 종료 If TypeName(strFile) = "Boolean" Then Exit Sub '텍스트파일을 띄어쓰기 기준으로 한줄씩 불러옵니다. '제목행은 다시 입력합니다. Open strFile For Input As #1 Do Until EOF(1) Line Input #1, Line v = Split(Line, " ") If UBound(v) > 0 Then Range("A1").Offset(i).Resize(, 3) = v i = i + 1 End If Loop Close #1 '서식 지정 With Range("A1").CurrentRegion .Rows(1) = Array("Date", "Time", "Used(%)") With Columns(3) .NumberFormatLocal = "G/표준" .Value = .Value End With End With End Sub ------------------------------------------------------------------------------------- Sub MakePivot() '텍스트파일을 소스로 하여 피벗테이블을 생성합니다. '업무시간(9~18시), 비업무시간(그 이외의 시간)으로 그룹을 나누어 일자별로 평균을 냅니다. '사용하지 않는 총합계, 다른 그룹들은 숨김처리를 합니다. Dim PvtRange As Range Dim PvName As String Range("E1").CurrentRegion.Clear PvName = "Cpu Used" Set PvtRange = Range("E1") ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=Range("A1").CurrentRegion).CreatePivotTable _ TableDestination:=PvtRange, TableName:=PvName With ActiveSheet.PivotTables(PvName) '값, 행레이블, 열레이블에 데이터를 입력합니다. With .PivotFields("Date") .Orientation = xlRowField .Position = 1 End With With .PivotFields("Time") .Orientation = xlColumnField .Position = 1 End With .AddDataField .PivotFields("Used(%)"), "CPU 사용률(%)", xlAverage '총합계는 생략합니다. .ColumnGrand = False .RowGrand = False '업무시간과 비업무시간으로 나누어 시간을 그룹으로 묶어줍니다. .PivotSelect "'09:00:00':'18:00:00'", xlDataAndLabel, True Selection.Group .PivotFields("Time2").PivotItems("그룹1").ShowDetail = False .PivotSelect "Time2['00:00:00':'23:30:00'] Time[All]", xlDataAndLabel, True Selection.Group .PivotFields("Time").Orientation = xlHidden With .PivotFields("Time2") With .PivotItems("그룹2") .ShowDetail = False .Position = 2 .Caption = "비업무시간" End With .PivotItems("그룹1").Caption = "업무시간" End With With PvtRange .CurrentRegion.NumberFormatLocal = "0.00_ " .Offset(, -4).Select End With End With End Sub | cs |
'VB(A)' 카테고리의 다른 글
다른시트의 데이터 검색하여 출력하기 (2) | 2016.10.30 |
---|---|
글자나누기 - Split, 정규식 (0) | 2016.10.30 |
주말, 법정공휴일, 대체공휴일이 적용된 달력 (4) | 2016.10.28 |
기간에 맞춰서 셀에 색 입히기 (0) | 2016.10.26 |
셀에 내용 입력시 도형 색 변화 (0) | 2016.10.25 |