6월 13 2016
엑셀(EXCEL) – 피봇으로 정렬된 데이터를 Raw데이터로 분리해서 한셀에 합치기
엑셀이란 프로그램으로 데이터를 다루다 보면 대부분의 데이터들이 격자에 담겨 있어
이것은 (x,y)좌표처럼 어떤 함수로 다룰 수 있다는 것입니다. 그 함수를 찾아내는 것이
VBA를 잘 다루는 능력이라 봅니다.
http://www.clien.net/cs2/bbs/board.php?bo_table=kin&wr_id=3747908
데이터를 격자행으로 사람이 보기좋게 분리해 두었는데 컴퓨터가 보기좋게 행으로
분리하였다가 또 그것을 한 행으로 합치는 것이 위 질문의 요지입니다. 결국 두 액션은
하나로 뭉쳐 하나인 것처럼 보이지만 두 액션이 붙어있다는 것입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
Option Explicit Sub Data_Merge() Dim i As Integer, j As Integer, colcnt As Integer Dim cel1 As Range, Ref1st As Range Dim cel2 As Range, Ref2nd As Range Set Ref1st = Range("A2", Range("A65536").End(xlUp)) Set Ref2nd = Range("B2", Range("B65536").End(xlUp)) ' 화면 갱신 중지 Application.ScreenUpdating = False ' 순환하고자 하는 컬럼의 갯수를 세어줌, 적은 경우 직접 세어서 입력 colcnt = Application.CountA(Range("C1", Range("C1").End(xlToRight))) For Each cel1 In Ref1st ' 첫번째 영역 순환 If Len(cel1) > = Then ' 첫번째 영역이 비어있지 않으면 다음 영역 순환 For Each cel2 In Ref2nd ' 두번째 영역 순환 For i = 0 To colcnt - 1 ' 칼럼 위치별 순환 Cells(j + 1, 7) = cel1 & "-" & cel2 & "-" & Cells(1, i + 3) Cells(j + 1, 8) = cel2.Offset(0, i + 1) j = j + 1 ' 컬럼을 증가시킨만큼 행을 이동해 줌 Next i Next cel2 End If Next cel1 ' 화면 갱신 Application.ScreenUpdating = True End Sub |
잘 이해하시면 VBA실력과 데이터를 해석하는 눈이 높아질 것으로 보입니다.
예제보고 열심히 공부하세요.
첨부 파일 : 20160613-분리된 데이터 행으로 통합
6월 17 2016
엑셀(EXCEL) – 워크북의 모든 PivotTable을 버튼 하나로 모두 갱신하기
누군가에게는 참 간단한 일인데 누군가에게는 너무 절박하고 힘들 일들이
많은 것 같습니다. 어제 잠깐 질문에 간단하게 댓글로 알려드렸는데 이해가
힘드신 모양입니다.
피봇테이블이 8개라 순서대로 하다가 잠시 다른 생각과 다른 일들이 생기면
했는지 안했는지 헷갈리고 다시 한 번 더 갱신하면 되는데 귀찮아서, 바빠서
그냥 갱신하지 않은 피봇테이블을 보고서에 올리는 경우가 있는가 봅니다.
업무를 하다보면 잘 하다가도 실수를 하게 됩니다.
VBA Editor여시고(Alt+F11) 삽입 > 모듈 추가하세요
위에 설명보시면 이해하실 것입니다. 그리고 개발도구에서 디자인모드 활성화
옆의 삽입에서 ActiveX 명령 단추 하나 만드시고 그 명령단추 더블 클릭해서
아래 코드 붙여 주시고 저장하면 됩니다. 개발도구 디자인모드 해제!!!
필요할 때마다 버튼 눌러주면 현재 워크북의 모든 피벗테이블 갱신합니다.
속도를 위해 화면 갱신을 하지 않고 처리하므로 그냥 버튼 눌러주시면 됩니다.
첨부 파일 : 20160617-Pivot자동 갱신
By vinipapa • 무른모 • 0