• About
  • Advertise
  • Privacy & Policy
  • Contact
NQ NEWS
  • Kiến thức tổng hợp
    • Development
    • Deep Learning
    • Cloud Computing
    • Kiến thức bảo mật
    • Tin học văn phòng
  • Thủ thuật
    • Phần Mềm
    • Sửa lỗi máy tính
    • Bảo mật máy tính
    • Tăng tốc máy tính
    • Thủ thuật Wifi
  • Quản trị hệ thống
    • Giải pháp bảo mật
    • Mail Server
    • Mạng LAN – WAN
    • Máy chủ
    • Windows Server 2012
  • Tin tức
No Result
View All Result
  • Kiến thức tổng hợp
    • Development
    • Deep Learning
    • Cloud Computing
    • Kiến thức bảo mật
    • Tin học văn phòng
  • Thủ thuật
    • Phần Mềm
    • Sửa lỗi máy tính
    • Bảo mật máy tính
    • Tăng tốc máy tính
    • Thủ thuật Wifi
  • Quản trị hệ thống
    • Giải pháp bảo mật
    • Mail Server
    • Mạng LAN – WAN
    • Máy chủ
    • Windows Server 2012
  • Tin tức
No Result
View All Result
NQ NEWS
No Result
View All Result
Home Kiến thức tổng hợp Tin học văn phòng ms excel

Dùng VBA trong Excel để tạo và sửa chữa PivotTable

@admiz by @admiz
01/09/2021
in ms excel
0
Hinh1

Chức năng PivotTable là chức năng mạnh của Excel, nó giúp bạn tổng kết số liệu nhanh một cách kinh ngạc. Chức năng này đầu tiên xuất hiện trong Excel 5.

Tôi cho rằng các bạn đã làm quen với việc tạo và sửa chữa PivotTable bằng cách thủ công và bài viết này sẽ hướng dẫn dùng VBA để tạo và sửa chữa PivotTable một cách linh động. Bài viết sử dụng cho Excel 2000.

Giả sử ở sheet1, tôi có khối dữ liệu cần phân tích như Hình1. Khối dữ liệu này gồm các trường: SalesRep (đại diện bán hàng), Region (Vùng), Month (Tháng), Sales (doanh số bán).

 

Trước khi tạo bảng PivotTable như Hình 2, tôi đã chọn Record New Macro… như Hình 3, để xem đoạn mã được ghi lại như thế nào.

Hình 3

Sau đó tôi vào màn hình VBE bằng cách nhấn tổ hợp phím Alt + F11. Tôi vào Module1, thấy được đoạn mã như sau:

Sub Macro1()

Macro1 Macro

Macro recorded 17/03/2003 by Duyet

Range(“A1:D13”).Select

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _

“Sheet1!R1C1:R13C4”).CreatePivotTable TableDestination:=Range(“A1″), _

TableName:=”PivotTable1”

 

ActiveSheet.PivotTables(“PivotTable1”).SmallGrid = False

Ghi chú:

Region

Là trường page trong PivotTable.

SalesRep

Là trường row trong PivotTable.

Month

Là trường column trong PivotTable.

Sales

Là trường data trong PivotTable sử dụng hàm Sum

 

ActiveSheet.PivotTables(“PivotTable1″).AddFields RowFields:=”SalesRep”, _

ColumnFields:=”Month”, PageFields:=”Region”

ActiveSheet.PivotTables(“PivotTable1”).PivotFields(“Sales”).Orientation = _

xlDataField

End Sub

Khảo sát đoạn mã đã được ghi:

Để khảo sát đoạn mã trên bạn cần phải biết một số đối tượng liên quan. Tất cả các đối tượng này đều được giải thích trên online help.

PivotCaches

là tập hợp các đối tượng PivotCache trong đối tượng Workbook

PivotTables

là tập hợp các đối tượng PivotTable trong đối tượng Workbook

PivotTableFields

là tập hợp các trường trong đối tượng PivotTable

Create PivotTable

một phương thức của đối tượng PivotCache để tạo một PivotTable sử dụng dữ liệu trong một PivotCache

 

Ta có thể viết lại thủ tục trên bằng thủ tục CreatePivotTable (chú ý bạn nhập thủ tục này vào module1) sau đây, có thể nó hơi dài nhưng sẽ dễ hiểu hơn, và bạn có thể chạy chương trình bất cứ đâu bằng cách nhấn tổ hợp phím Alt + F8, sau đó chọn thủ tục CreatePivotTable và chọn Run như Hình 4.

Sub CreatePivotTable()

Dim PTCache As PivotCache

Dim PT As PivotTable

Application.ScreenUpdating = False

Xoa PivotSheet neu no ton tai

On Error Resume Next

Application.DisplayAlerts = False

Sheets(“PivotSheet”).Delete

On Error GoTo 0

Tao Pivot Cache

Set PTCache = ActiveWorkbook.PivotCaches.Add _

(SourceType:=xlDatabase, _

SourceData:=Sheets(“Sheet1”).Range(“A1”).CurrentRegion.Address)

Tao worksheet moi va dat ten

Worksheets.Add

ActiveSheet.Name = “PivotSheet”

Tao Pivot Table tu Cache

Set PT = PTCache.CreatePivotTable _

(TableDestination:=Sheets(“PivotSheet”).Range(“A1″), _

TableName:=”PivotTable1”)

With PT

Them cac truong

.PivotFields(“Region”).Orientation = xlPageField

.PivotFields(“Month”).Orientation = xlColumnField

.PivotFields(“SalesRep”).Orientation = xlRowField

.PivotFields(“Sales”).Orientation = xlRowField

Application.ScreenUpdating = True

End With

End Sub

Khi chạy xong thủ tục trên, bạn sẽ được một PivotTable ở sheet2, trong trường hợp này sheet có tên là PivotSheet. (Hình 5)

Nếu chú ý, bạn sẽ thấy sự khác biệt của 2 đoạn mã trên. Trong Macro1 khi sử dụng phương thức Add để tạo PivotCache thì SourceData là “Sheet1!R1C1:R13C4” còn trong đoạn mã tôi viết là Sheets(“Sheet1”).Range(“A1”).CurrentRegion.Address. Ở đây tôi dùng thuộc tính Current Region, có nghĩa là dữ liệu chúng ta sử dụng dựa trên vùng hiện tại xung quanh ô A1. Điều này để chắc chắn thủ tục CreatePivotTable vẫn tiếp tục làm việc tốt khi chúng ta thêm vào dữ liệu.

Bây giờ giả sử tôi có thêm trường Target (chỉ tiêu) trong khối dữ liệu, và trong PivotTable tôi sẽ đưa thêm trường target vào đồng thời cũng thêm trường tính toán Variance. Trường này (Variance) sẽ bằng Sales – Target. Khối dữ liệu mới của tôi như hình 6.

 

Đoạn mã trong thủ tục CreatePivotTable trên sẽ được thêm như sau (tôi chỉ thêm trong đoạn With PT ….End With):

With PT

Them cac truong

.PivotFields(“Region”).Orientation = xlPageField

.PivotFields(“Month”).Orientation = xlColumnField

.PivotFields(“SalesRep”).Orientation = xlRowField

.PivotFields(“Sales”).Orientation = xlDataField

.PivotFields(“Target”).Orientation = xlDataField

Them truong tinh toan

.CalculatedFields.Add “Variance”, “=Sales – Target”

.PivotFields(“Variance”).Orientation = xlDataField

Thay doi caption

.PivotFields(“Sum of Sales”).Caption = “Sales ($) ”

.PivotFields(“Sum of Target”).Caption = “Target ($) ”

.PivotFields(“Sum of Variance”).Caption = “Variance ($) ”

End With

Sau khi chạy lại thủ tục trên tôi sẽ được như hình 7.

Giả sử bây giờ dữ liệu của tôi gồm 6 tháng (hình 8), tôi muốn đưa thêm cột tổng theo từng 3 tháng. Tôi phải sửa lại đoạn mã của mình như sau:

With PT

Them cac truong

.PivotFields(“Region”).Orientation = xlPageField

.PivotFields(“Month”).Orientation = xlColumnField

.PivotFields(“SalesRep”).Orientation = xlRowField

.PivotFields(“Sales”).Orientation = xlDataField

.PivotFields(“Target”).Orientation = xlDataField

Them truong tinh toan

.CalculatedFields.Add “Variance”, “=Sales – Target”

.PivotFields(“Variance”).Orientation = xlDataField

Them muc tinh toan

.PivotFields(“Month”).CalculatedItems.Add “Q1”, _

“= thang 1 + thang 2 + thang 3”

.PivotFields(“Month”).CalculatedItems.Add “Q2”, _

“= thang 4 + thang 5 + thang 6”

Di chuyen cac muc tinh toan

.PivotFields(“Month”).PivotItems(“Q1”).Position = 4

.PivotFields(“Month”).PivotItems(“Q2”).Position = 8

Thay doi caption

.PivotFields(“Sum of Sales”).Caption = “Sales ($) ”

.PivotFields(“Sum of Target”).Caption = “Target ($) ”

.PivotFields(“Sum of Variance”).Caption = “Variance ($) ”

End With

Sau khi chạy lại thủ tục CreatePivotTable tôi sẽ được kết quả như Hình 9.

Vâng, đến đây các bạn thấy đó, nếu chúng ta biết sử dụng VBA thì công việc phân tích dữ liệu sẽ trở nên đơn giản hơn. Ngoài ra, ta cũng có thể tạo một PivotTable từ nguồn dữ liệu bên ngoài như Access chẳng hạn. Để lập trình PivotTable được tốt, các bạn nên đọc phần online help của Excel về các đối tượng, phương thức, thuộc tính đã đề cập ở trên.

Hy vọng rằng bài viết trên sẽ giúp các bạn một phần nào trong công việc.

Mọi góp ý, xin các bạn gửi về levanduyet@pmail.vnn.vn.

Lê Văn Duyệt

 

Post Views: 167
Previous Post

Tổng hợp mẫu tin nhắn trả lời khách hàng chốt đơn thần sầu trên Facebook

Next Post

Tổng hợp Các công cụ SEO miễn phí và hiệu quả bạn không thể bỏ qua

Related Posts

Cách định Dạng Ngày Tháng Trên Excel 6093d95944e43.jpeg
ms excel

Cách định dạng ngày tháng trên Excel

30/04/2022
Tổng Hợp Các Hàm Số Lượng Giác Trong Excel 6093d945e72fa.jpeg
ms excel

Tổng hợp các hàm số lượng giác trong Excel

30/04/2022
Cách Sắp Xếp Tên Theo Thứ Tự Chữ Cái Trong Excel 6093d96262167.jpeg
ms excel

Cách sắp xếp tên theo thứ tự chữ cái trong Excel

30/04/2022
Cách Tạo Bảng Excel, Chèn Bảng Trong Excel 6093d9760b0ed.jpeg
ms excel

Cách tạo bảng Excel, chèn bảng trong Excel

30/04/2022
Tra Cứu Dữ Liệu Trong Bảng Excel: Thay Thế Vlookup Bằng Index Và Match 6093d986a4a62.jpeg
ms excel

Tra cứu dữ liệu trong bảng Excel: Thay thế VLOOKUP bằng INDEX và MATCH

30/04/2022
Cách Tạo Danh Sách Sổ Xuống (drop List) Trên Excel 2016 6093d9a71cf56.jpeg
ms excel

Cách tạo danh sách sổ xuống (drop list) trên Excel 2016

28/04/2022
Next Post
Tổng Hợp Các Công Cụ Seo Miễn Phí Và Hiệu Quả Bạn Không Thể Bỏ Qua 612f9316d0ce6.jpeg

Tổng hợp Các công cụ SEO miễn phí và hiệu quả bạn không thể bỏ qua

Bài mới nhất

Dịch Vụ Thiết Kế Website Tại Hải Dương Chuyên Nghiệp, ấn Tượng Và Uy Tín 612d25752b14f.png

Dịch vụ thiết kế website tại Hải Dương chuyên nghiệp, ấn tượng và uy tín

06/05/2025
Top Công Ty Thiết Kế Website Tại Biên Hòa Chuyên Nghiệp, Chuẩn Seo 612d259494e93.jpeg

Top công ty thiết kế website tại Biên Hòa chuyên nghiệp, chuẩn SEO

06/05/2025
Top Công Ty Thiết Kế Website Tại Vinh – Nghệ An Uy Tín 612d259a9cae3.jpeg

Top công ty thiết kế website tại Vinh – Nghệ An uy tín

05/05/2025
Top 10 Công Ty Thiết Kế Website Tại Nha Trang Chuyên Nghiệp 612d0a9ad018b.jpeg

Top 10 công ty thiết kế website tại Nha Trang chuyên nghiệp

05/05/2025
Các Dịch Vụ Thiết Kế Website Tại Vĩnh Phúc Chuyên Nghiệp, Uy Tín Nhất 612d0a91e63af.jpeg

Các dịch vụ thiết kế website tại Vĩnh Phúc chuyên nghiệp, uy tín nhất

04/05/2025

Danh mục

  • Android
  • Bảo mật máy tính
  • Bảo mật, Antivirus
  • Chuyện công nghệ
  • Deep Learning
  • Development
  • Dịch vụ công trực tuyến
  • Dịch vụ nhà mạng
  • Giải pháp bảo mật
  • Hệ thống
  • Hệ thống
  • iPhone
  • Kiến thức bảo mật
  • Kiến thức cơ bản phổ thông
  • Kiến thức Marketing căn bản
  • Kiến thức tổng hợp
  • Lập trình
  • Linux
  • Linux OS
  • macOS
  • Mail Server
  • Mạng LAN – WAN
  • Máy ảo
  • Máy chủ
  • ms excel
  • ms-powerpoint
  • Nền tảng điện toán đám mây
  • Phần cứng
  • Phần Mềm
  • Quản trị hệ thống
  • Raspberry Pi
  • Sửa lỗi máy tính
  • Tăng tốc máy tính
  • Thủ thuật
  • Thủ thuật SEO
  • Thủ thuật Wifi
  • Tiện ích hệ thống
  • Tin học văn phòng
  • Tin tức
  • Uncategorized
  • Ứng dụng
  • Website
  • Windows Server 2012

Thẻ

#app #chatbot #chatbot tự động #CRM #Kiến thức cơ bản #Techblog #Thiết kế website Android apple CPU Email Marketing Google Google Drive hacker HTML hàm python hàm python có sẵn hình nền hình nền máy tính học css học python học SQL ios iphone iphone 12 iPhone X macos Microsoft mssql MS SQL Server ngôn ngữ lập trình python Raspberry Pi Samsung smartphone SQL SQL Server tham số trong C thủ thuật windows 10 tài liệu python windows windows 10 YouTube điện thoại thông minh ứng dụng
  • About
  • Advertise
  • Privacy & Policy
  • Contact

© 2022 Pha Le Solution

No Result
View All Result
  • Home

© 2022 Pha Le Solution