Tự động làm mới dữ liệu cho PivotTable

Làm mới (refresh) dữ liệu là một trong những nhu cầu cần thiết khi sử dụng PivotTable vì khi dữ liệu bạn thay đổi, chỉ khi bạn refresh, ngoài ra PivotTable sẽ không tự động cập nhật giúp bạn dữ liệu mới. Và nhiều khi, bạn ước là có một cách nào đó để PivotTable tự động refresh dữ liệu.

Tuy nhiên, không có một phép thuật nào xảy ra ở đây cả, vì PivotTable được thiết kế nguyên bản… không có chức năng tự động cập nhật dữ liệu mới.

Do vậy, để cập nhật dữ liệu mới, bạn phải luôn tự làm bằng tay bằng cách bấm chuột phải vào PivotTable -> chọn Refresh.





Cách thứ hai bạn có thể dùng đến, mang một chút tự động, đó là sử dụng chức năng tự động refresh mỗi khi mở file của PivotTable. Cách này trông có vẻ tốt, nhưng chỉ đến khi bạn tắt file và mở lại. Còn nếu bạn không thực hiện hành động trên, PivotTable của bạn cũng sẽ “đứng im” với dữ liệu cũ.

Để thực hiện cách này, bạn có thể bấm chuột phải vào PivotTable -> PivotTable Options -> chọn thẻ Data -> chọn Refresh data when opening the file -> OK.



Vì thực tế PiotTable không hỗ trợ, do đó, nếu bạn thật sự muốn PivotTable của bạn tự động refresh, bạn phải dùng VBA để can thiệp. Có rất nhiều cách để lập trình ra macro này, tùy theo tình huống bạn mong muốn. Tuy nhiên, với tình huống trong bài viết này, tôi sẽ chọn sự kiện Worksheet_Activate vì đa phần tất cả mọi người khi tạo PivotTable đều đặt PivotTable qua một sheet riêng, và do vậy, khi sử dụng sự kiện, dòng lệnh VBA của bạn sẽ tự kích hoạt mỗi khi bạn kích hoạt sheet này.
Code:

Private Sub Worksheet_Activate()
   Dim pt As PivotTable
   For Each pt In Me.PivotTables
      pt.RefreshTable
   Next pt
End Sub


Chỉ cần bạn đặt dòng lệnh này vào đúng sheet chứa PivotTable, ngay lập tức mỗi khi kích hoạt, PivotTable của bạn sẽ tự động cập nhật toàn bộ. Chẳng hạn như tôi vừa thêm dòng Đà Nẵng vào dữ liệu, và ngay khi tôi bấm lại sheet PV04 của mình, lập tức PivotTable sẽ tự động cập nhật.




1 comment: