Code về Refresh Table của Pivot Table

  • Thread starter Thread starter TKT
  • Ngày gửi Ngày gửi
Liên hệ QC

TKT

Thành viên tiêu biểu
Tham gia
2/1/08
Bài viết
673
Được thích
1,336
Nghề nghiệp
.....
File này mình tổng hợp dữ liệu bằng Pivot table. Hạn chế về Pivot table là ở chỗ không tự Refresh dữ liệu mỗi khi có sự thay đổi từ dữ liệu nguồn mà phải chờ người sử dụng ra lệnh bằng động tác Click phải chuột -> Refresh.

Nhân tiện quý Anh/Chị hướng dẫn Trí viết code này: Khi người sử dụng click chuột vào Sheet "TRICH LOC DANH SACH" khi đó Pivot table tự Refresh.
Xin chân thành cảm ơn.
 

File đính kèm

Tôi nghĩ bạn dùng sự kiện Worksheet_Activate là được mà:
PHP:
Private Sub Worksheet_Activate()
    Range("A10").Select
    ActiveSheet.PivotTables("PivotTable10").PivotCache.Refresh
End Sub
 
Upvote 0
Vẫn chưa được anh ơi!
 
Upvote 0
Upvote 0
xin được hỏi Trí
trong name DANH_SACH_DUY_NHAT hàm match("*"....) có nghĩa như nào vậy?

Làm thế nào để danh sách trong Pivot Table được tập hợp cả tháng 1, 2,3
Xin cám ơn trước

TKS
 
Lần chỉnh sửa cuối:
Upvote 0
xin được hỏi Trí
trong name DANH_SACH_DUY_NHAT hàm match("*"....) có nghĩa như nào vậy?

Làm thế nào để danh sách trong Pivot Table được tập hợp cả tháng 1, 2,3
Xin cám ơn trước

TKS

match("*"....) hình như là dò tìm ra ô ở dòng cuối cùng trong vùng dữ liệu. Bạn vào Topic các công thức độc đáo xem thử.
 
Upvote 0
xin được hỏi Trí
trong name DANH_SACH_DUY_NHAT hàm match("*"....) có nghĩa như nào vậy?
Bạn đọc bài này do anh
BNTT viết: = MATCH("*", Sheet1!$B:$B, -1)
Dùng hàm MATCH, tìm trong cột B của Sheet1 hàng nào chứa ô cuối cùng có chứa một giá trị kiểu text, và cuoi là con số của hàng tìm được này.
Ở đây, dấu "*" đại diện cho bất kỳ một ký tự nào, và với cách tìm là -1 của hàm MATCH, nó sẽ tìm giá trị nhỏ nhất mà lớn hơn hoặc bằng giá trị "*", mà "*" là đại diện cho bất kỳ một chữ nào, cho nên MATCH sẽ lấy ô nào cuối cùng có chứa chữ.

Làm thế nào để danh sách trong Pivot Table được tập hợp cả tháng 1, 2,3
1 Tại sheet tổng hợp vào data
2 pivot table ....
3 multiple consolidation range
4 next
5 next
6 chọn vùng cần xử lý của các tháng (hay nhất là đặt name)
7 add
Thân
 
Lần chỉnh sửa cuối:
Upvote 0
xin được hỏi Trí
trong name DANH_SACH_DUY_NHAT hàm match("*"....) có nghĩa như nào vậy?

PHP:
= MATCH("*";'TRICH LOC DANH SACH'!$A:$A;-1)

Bill nói :

If match_type is -1, MATCH finds the smallest value that is greater than or equal to lookup_value. Lookup_array must be placed in descending order: TRUE, FALSE, Z-A, ...2, 1, 0, -1, -2, ..., and so on.


BNTT đã viết:
Hàm MATCH
Hàm MATCH() dùng để biết vị trí của một giá trị trong một dãy giá trị (một hàng hoặc một cột)

Cú pháp: MATCH(lookup_value, lookup_array, match_type)
lookup_value ___Giá trị dùng để tìm kiếm trong hàng đầu tiên của table_array, giá trị này có thể là một số, một chuỗi, hoặc là một tham chiếu

lookup_array___Cột hoặc hàng dùng để dò tìm

match_type____Là 1, 0 hoặc 1, để chỉ kiểu tìm kiếm
-1 : MATCH() sẽ tìm giá trị nhỏ nhất mà lớn hơn hoặc bằng lookup_value
_____trong trường hợp này, lookup_array phải được xếp theo thứ tự giảm dần (từ lớn đến nhỏ) 0 : _MATCH() sẽ tìm chính xác giá trị lookup_value

1 : _(là giá trị mặc định) MATCH() sẽ tìm giá trị lớn nhất mà nhỏ hơn hoặc bằng lookup_value
_____trong trường hợp này, lookup_array phải được xếp theo thứ tự tăng dần (từ nhỏ đến lớn)
Một số lưu ý khi sử dụng hàm MATCH()
- Nếu match_type = 0, và lookup_value giá trị kiểu text, bạn có thể dùng các ký tự đại diện cho lookup_value
- (dấu * đại diện cho nhiều ký tự / hoặc dấu ? đại diện cho một ký tự)

- Nếu không tìm thấy lookup_value trong lookup_array, hàm MATCH() sẽ báo lỗi #NA!

Vậy là bạn có thể hiểu rằng tại sao lại là "*", tại sao lại là -1

Bạn có thể tham khảo tại đây :

http://tiny.pl/2cw2

Thân!
 
Upvote 0
He he
Anh Bắb cẩn thận quá, lại còn trích Bill nói

he he..be.be
Cám ơn cả nhà mình nhé!
 
Upvote 0
xin nhắc lại đề tài này, em xin hỏi có code nào mà khi nhập dử liệu bên sheet này thì cùng lúc refresdata bên sheet kia không các huynh, em đang cần sử dụng pivot vào mục đích tông hợp tồn kho, xin cảm ơn.
 
Upvote 0
xin nhắc lại đề tài này, em xin hỏi có code nào mà khi nhập dử liệu bên sheet này thì cùng lúc refresdata bên sheet kia không các huynh, em đang cần sử dụng pivot vào mục đích tông hợp tồn kho, xin cảm ơn.
Khuyên bạn không nên làm vậy! vì mỗi lần nhập liệu, code phải tính toán lại khiến cho file bị chậm đi ---> Khi nào cần Refresh, ta bấm nút 1 cái đâu có cực nhọc gì
 
Upvote 0
nhưng làm được phải không thầy, em thấy trong file ở trên mỗi khi mình vào sheet có pivot thì nó mới refresh nên em muốn hỏi
 
Upvote 0
nhưng làm được phải không thầy, em thấy trong file ở trên mỗi khi mình vào sheet có pivot thì nó mới refresh nên em muốn hỏi
File đó người ta không cập nhật khi nhập liệu... chỉ khi bạn chuyển sang sheet chứa PivotTable thì code mới chạy ---> Dùng sự kiện Worksheet_Activate để làm điều này ===> Tức code chỉ chạy 1 lần khi bạn cần xem, còn lúc ta đang nhập liệu, nó chẳng làm gì
 
Upvote 0
Giả sử em không vào sheet chứa pivot mà vào sheet NXT chẳng hạn mà muốn nó refresh được không thầy
 
Upvote 0
Em có thử nhưng nó báo lỗi thầy ơi
 
Upvote 0
Em có thử nhưng nó báo lỗi thầy ơi
Lỗi thế nào? Gữi lên đây xem thử
Code cũ của người ta là:
Mã:
Private Sub Worksheet_Activate()
    [COLOR=Red][B]ActiveSheet[/B][/COLOR].PivotTables("PivotTable10").PivotCache.Refresh
End Sub
ActiveSheet ở đây chính là sheet chứa PivotTable (Sheet TRICH LOC DANH SACH)
Giờ bạn mang code sang 1 sheet khác, cái ActiveSheet này ngầm nói đến sheet bạn đang đứng chứ có phải là sheet chứa PivotTable đâu
Vậy nên phải sửa thế này mới được:
Mã:
Private Sub Worksheet_Activate()
  [COLOR=Red][B]Sheets("TRICH LOC DANH SACH")[/B][/COLOR].PivotTables("PivotTable10").PivotCache.Refresh
End Sub
Nếu vẫn chưa làm được, cứ gữi file đang bị lỗi lên đây!
 
Upvote 0
em làm được rồi, em cảm ơn thầy nhiều
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom