Copy vùng pivot bằng VBA

Liên hệ QC

loinguyen212

Thành viên thường trực
Tham gia
21/2/14
Bài viết
254
Được thích
35
Có cách nào để khi bấm nút thì tự động bôi toàn bộ bảng pivot và copy không ạ? (Bảng pivot thay đổi dòng theo dữ liệu)
Bảng và dữ liệu trong file đính kèm. Mong nhận được sự giúp đỡ chỉ dạy của mọi người.

File đính kèm.................................
 

File đính kèm

  • FileNhapLieu.xlsm
    17.8 KB · Đọc: 27
Chỉnh sửa lần cuối bởi điều hành viên:
Có cách nào để khi bấm nút thì tự động bôi toàn bộ bảng pivot và copy không ạ? (Bảng pivot thay đổi dòng theo dữ liệu)
Bảng và dữ liệu trong file đính kèm. Mong nhận được sự giúp đỡ chỉ dạy của mọi người.

File đính kèm.................................

Code thế này:
Mã:
Sheets("DLTinh").PivotTables("PivotTable1").TableRange2.Copy
 
Em cảm ơn bác ndu96081631. Nếu mà có vài nút like thì em cũng like cho bõ, tuần nay em mò mà không được. Cảm ơn bác rất nhiều.
Tiện cho em:
Thứ 1: hỏi chỗ "TableRange2" là chọn cái gì đấy ạ, em mù tịt về VBA nên hỏi dại, mong bác thông cảm.
--=0
Thứ 2: Vùng pivot có thể xóa dòng cuối (là dòng Grand Total, bằng cách vào Option của pivot), vậy em có thể xóa nốt dòng title của nó mà không cần dùng đến VBA không ạ?
 
Lần chỉnh sửa cuối:

Tiện cho em:
Thứ 1: hỏi chỗ "TableRange2" là chọn cái gì đấy ạ

Ví dụ PivotTable của bạn có Page Field, vậy:
- TableRange1 là vùng dữ liệu không chứa Page Field (như khung màu xanh hình dưới)
- TableRange2 là vùng dữ liệu bao gồm cả Page Field (như khung màu đỏ hình dưới)

Capture.JPG
































Thứ 2: Vùng pivot có thể xóa dòng cuối (là dòng Grand Total, bằng cách vào Option của pivot), vậy em có thể xóa nốt dòng title của nó mà không cần dùng đến VBA không ạ?
Không xóa được tiêu đề đâu. Tuy nhiên bạn có thể sửa tiêu đề thành những khoảng trắng khiến ta cảm giác rằng nó là cell rổng (như hình dưới)

Capture2.JPG
 
Cảm ơn câu trả lời rất đầy đủ và quá tuyệt vời của Bác @$@!^%@$@!^%@$@!^%. Bác và GPE thật tuyệt, Chúc Bác một ngày làm việc hiệu quả và công việc thuận lợi.
 
Cho em hỏi thêm một ý (vì vấn đề nhỏ nên không đặt riêng câu hỏi, mong bác chỉ giáo). Cụ thể em muốn hỏi tại sao dữ liệu trên bảng pivot lại có thể thay đổi và khi refresh thì không quay trở về bảng pivot đúng ban đầu? (em giải thích rõ hơn: khi pivot xong như ở trên, em điền vào cell C6 là abc thì khi refresh lại thì bảng pivot không trả về giá trị lúc em chưa sửa). Mong nhận được lời giải đáp. Em cảm ơn.
 
Có vẻ như em hơi tham lam đặt câu hỏi, mong sự giúp đỡ từ Bác và mọi người.
 
Em lấy ví dụ như bảng pivot ở trên, ô B6 hiện tại là "Mỹ Đình - Bắc Hà", em gõ vào ô này là "abc", vậy em làm cách nào để lấy lại được bảng pivot đúng (vì khi refresh lại thì cũng ô B6 vẫn hiện là “abc”).
 
Em lấy ví dụ như bảng pivot ở trên, ô B6 hiện tại là "Mỹ Đình - Bắc Hà", em gõ vào ô này là "abc", vậy em làm cách nào để lấy lại được bảng pivot đúng (vì khi refresh lại thì cũng ô B6 vẫn hiện là “abc”).

Mình search trên mạng dc đoạn code này để Resetting Custom Pivot Table Row Labels
Mã:
 Sub ResetPivotTableLabels()
 
   Dim badPivot As PivotTable
   Dim badField As PivotField
   Dim badItem As PivotItem
 
   For Each badPivot In ActiveSheet.PivotTables
      For Each badField In badPivot.PivotFields
         For Each badItem In badField.PivotItems
            If badField.Name <> "Values" Then
               If badItem.Caption <> badItem.SourceName Then
                  badItem.Caption = badItem.SourceName
               End If
            End If
         Next
      Next
   Next
 
End Sub
 
Cảm ơn anh tan.ngohoangquoc. Đoạn code anh cung cấp nhằm mục đích để lấy lại được bảng pivot đúng đúng không ạ. Nghĩa là việc rèfresh không giải quyết được và cần hỗ trợ bằng code thì mới thực hiện được đúng không anh?
 
Cảm ơn anh tan.ngohoangquoc. Đoạn code anh cung cấp nhằm mục đích để lấy lại được bảng pivot đúng đúng không ạ. Nghĩa là việc rèfresh không giải quyết được và cần hỗ trợ bằng code thì mới thực hiện được đúng không anh?

Đoạn code trên chính là trả về giá trị của Row Lables trước khi bạn thay đổi nó :) Mình đọc dc trên mạng và apply code đó thì thấy nó công dụng vậy á :p
 
nếu khi một workbook có nhiều hơn 1 bảng pivot thì đoạn code trên cũng sẽ reset cả những pivot còn lại hay chỉ một bảng?
 
nếu khi một workbook có nhiều hơn 1 bảng pivot thì đoạn code trên cũng sẽ reset cả những pivot còn lại hay chỉ một bảng?

Nó là đoạn này nhé
Mã:
Option Explicit

 Sub ResetPivotTableLabels()


     Dim wks As Worksheet
     Dim badPivot As PivotTable
     Dim badField As PivotField
     Dim badItem As PivotItem
     
     For Each wks In Worksheets
       For Each badPivot In wks.PivotTables
          For Each badField In badPivot.PivotFields
             For Each badItem In badField.PivotItems
                If badField.Name <> "Values" Then
                   If badItem.Caption <> badItem.SourceName Then
                      badItem.Caption = badItem.SourceName
                   End If
                End If
             Next
          Next
       Next
     Next
End Sub
 
Cảm ơn bác Tan.ngohoangquoc. Chúc Bác sức khỏe và ngày làm việc hiệu quả.
 
Web KT
Back
Top Bottom