• 카테고리

    질문 & 답변
  • 세부 분야

    오피스

  • 해결 여부

    미해결

안녕하세요! 파워쿼리 자동 업데이트 관련하여 문의드립니다.

20.12.11 02:32 작성 조회수 1.33k

1

안녕하세요 선생님:)

선생님의 좋은 강의 덕분에 실력이 많이 성장하고 있는 것 같습니다.

현재 피벗테이블로 분석 및 자동 업데이트까지 들었는데요.

피벗테이블 자동 업데이트 처럼 raw데이터 입력시 파워쿼리로 만든 테이블도 자동업데이트 되는 방법도 있을까요?

Raw데이터 입력 -> 파워쿼리 테이블 자동 업데이트 -> 피벗테이블 자동 업데이트 이렇게 맞물리게 돌아가도록 하고 싶어서요.

항상 감사합니다.

답변 2

·

답변을 작성해보세요.

2

안녕하세요:)
데이터에 대한 빅픽처를 그리면서 파일을 디자인하는 실력을 갖추고 계시는군요.
멋지십니다!!!

★제공된
'21_marketing_완성.xlsm' 파일로 테스트해보세요.
질문하신 내용이 자동으로 반영되도록 설계되어 있습니다.

완성된 파일의 VBE창을 보시면
sheet1(대시보드), sheet4(파워쿼리 테이블)에 각각 피벗과 쿼리 업데이트 코드가 들어가 있습니다.
따라서
1. raw data 수정되면
2. sheet4(파워쿼리 테이블) 선택 시, 업데이트
3. sheet1(대시보드: 피벗 존재) 선택 시, 업데이트가 이루어집니다.

그러나 이 로직은
raw data 수정 후, 연관된 파워쿼리, 피벗 시트가 존재하는 시트를 다시 선택해야 업데이트가 이루어지므로
완전 자동화라 볼 수 없습니다.
그럼 어떻게 해야 할까요?

★workbook 이벤트의 'sheetchange' 이벤트에
업데이트 관련 코드를 추가하면 해결됩니다만
이 또한 문제가 있습니다.
체인지 이벤트이므로 해당 통합문서의 모든 시트에서 글자 하나 지워도
체인지 이벤트를 통해 업데이트가 수시로 실행되므로
데이터가 많을 경우 실익이 떨어집니다.
그러면 또 어떻게 해야 할까요?

★raw data 수정 후, 매크로 버튼 클릭하면 이 때
관련 시트들이(파워쿼리, 피벗) 업데이트 되도록 설계하는 것이
가장 현실성 있을 것 같습니다.
(네이버 개인 블로그에 자료 업로드 제한이 10MB까지여서
 수정 완성된 파일을 드릴 수가 없습니다ㅜ.ㅜ)

☆만드는 순서는...
1. 기존 이벤트 프로시저들은 모두 제거
2. 일반 모듈 추가
3. 아래의 2개 프로시저를 복사-> 붙여넣기
4. raw data인 sheet1과 sheet2에 매크로 버튼 생성 -> 각각의 프로시저 연결 -> 완성

Sub RefreshAllObjects_1()

    Dim pv As PivotTable  

    Application.ScreenUpdating = False    

    ThisWorkbook.RefreshAll    

    For Each pv In Sheet2.PivotTables

       pv.PivotCache.Refresh

    Next

   Application.ScreenUpdating = True

End Sub

Sub RefreshAllObjects_2()

    Dim pv As PivotTable    

    Application.ScreenUpdating = False    

    ThisWorkbook.RefreshAll    

    For Each pv In Sheet3.PivotTables

       pv.PivotCache.Refresh

    Next

   Application.ScreenUpdating = True

End Sub

0

HWAN JEONG님의 프로필

HWAN JEONG

질문자

2020.12.13

안녕하세요 선생님:)

자세하고 친절한 설명 정말 감사드립니다ㅠㅠ

선생님 덕분에 많은 가르침을 배우고 있습니다!

위에 알려주신 내용을 토대로 연습을 해보고 막히는 점이 있으면 다시 질문드리도록 하겠습니다.

항상 감사합니다!