Bảng tổng hợp Excel trỏ đến Bảng 1
CHÀO,
Tôi nhận được báo cáo hàng tháng bằng excel và dữ liệu nằm trong "Bảng 1"
Tôi đã tạo một loạt các bảng tổng hợp dựa trên "Bảng 1" và mục đích của tôi là sao chép các tab bảng tổng hợp đó vào báo cáo mới mỗi tháng.
Tôi đang suy nghĩ vì dữ liệu nguồn luôn ở trong "Bảng1" nên nó sẽ làm mới khi được sao chép sang tệp mới. Nhưng không phải vậy. Các bảng tổng hợp trong báo cáo mới vẫn chứa dữ liệu từ "Bảng 1" cũ trong báo cáo của tháng trước.
Đây là những gì tôi đã làm:
Khi mở cả tệp của tháng trước và tháng này, tôi đã sao chép từng tab chứa bảng tổng hợp sang tệp mới. Mỗi tab chỉ có một bảng tổng hợp. Tất cả các bảng tổng hợp đều trỏ đến cùng một nguồn, Bảng 1.
Sau đó, tôi đóng hồ sơ báo cáo tháng trước.
Đây là những gì tôi đã thử:
Trong tệp mới, tôi đã thử nghiệm các kết nối, chẳng hạn như "Kết nối hiện tại", nơi tôi đi tới tab "Bảng", chọn Bảng 1, Mở và "Chỉ tạo kết nối" nhưng điều đó không cập nhật bất cứ điều gì.
Cảm ơn!
Trả lời:
Xin chào KKB_IHP,
Vì vậy, nếu tôi hiểu chính xác:
- Tệp "tháng trước" và "tháng này" đều có nguồn tên là "Bảng1"
- Bạn muốn sao chép các bảng tổng hợp từ tệp "tháng trước" vào tệp "tháng này" và để các bảng tổng hợp mới được sao chép trỏ vào "Bảng1" trong "tháng này".
- Tên của "Bảng1" không bao giờ thay đổi.
Như những người khác đã nói, bạn cần cập nhật nguồn tổng hợp cho các bảng được sao chép. Đây có thể là một công việc khó khăn khi có nhiều bảng tổng hợp, vì vậy nếu bạn cảm thấy thoải mái khi sử dụng macro thì đoạn mã sau sẽ thực hiện được thủ thuật này. Nó hoạt động bằng cách xóa các tham chiếu bên ngoài khỏi nguồn dữ liệu (ví dụ: chỉ để lại "Table1" thay vì 'C:\Users\...'!Table1).
Trước tiên hãy sao chép qua các bảng tổng hợp của bạn, sau đó chạy mã này trong mô-đun trong tệp "tháng này":
Sub RemoveExternalPvtSourceReferences()
Dim sht As Worksheet
Làm mờ pvt dưới dạng PivotTable
Dim s dưới dạng chuỗi
Khi xảy ra lỗi Tiếp tục tiếp theo
Đối với mỗi sht trong ThisWorkbook.Sheets
Đối với mỗi pvt Trong sht.PivotTables
Nếu InStr(pvt.PivotCache.SourceData, "!") > 0 Thì
'Dành cho bàn
s = Right(pvt.PivotCache.SourceData, Len(pvt.PivotCache.SourceData) - InStr(pvt.PivotCache.SourceData, "!"))
pvt.ChangePivotCache ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=s, Version:=6)
KhácNếu InStr(pvt.PivotCache.SourceData, "]") > 0 Thì
'Đối với phạm vi
s = "'" & Right(pvt.PivotCache.SourceData, Len(pvt.PivotCache.SourceData) - InStr(pvt.PivotCache.SourceData, "]"))
pvt.ChangePivotCache ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=s, Version:=6)
Kết thúc nếu
Kế tiếp
Kế tiếp
Kết thúc phụ
>Lưu ý: mã này sẽ xóa các tham chiếu bên ngoài khỏi TẤT CẢ các bảng tổng hợp trong tệp. Nếu bạn chỉ cần nhắm mục tiêu vào một vài bảng tổng hợp, chúng tôi có thể điều chỉnh mã cho phù hợp.
Hi vọng điêu nay co ich!
Daniel.
(CHỈNH SỬA: lỗi đánh máy đã được sửa trong mã)
Comments
Post a Comment