File của bạn dữ liệu nhiều nên phải tùy cơ ứng biến
Ví dụ
- Tại sheet Tổng Hợp, cột A là số phiếu. Bạn có thể dựa vào số phiếu này để truy tìm tên sheet (đâu nhất thiết phải dùng công thức tổng quát như trên)
- Tại sheet Phiếu Thanh Toán có nhiều cell mà công thức cứ lập đi lập lại đoạn ...LOOKUP(2,1/COUNTIF(INDIRECT("'"&wks&"'!a5:ak120").... ---> Vậy bạn có thể đặt đoạn ấy ra 1 cell phụ (trong VBA gọi là biến tạm) để tăng tốc
----------------
Tôi cải tiến sơ qua rồi đây! Bạn tải về xem tốc độ đã được cải thiện chưa nhé
Mặt mày hớn hở cám ơn Thầy rất nhiều.
File chạy như gió.
Em chưa hiểu lắm công thức của Thầy nên Thầy giải thích em cũng còn ngu muội.
Có 1 số vấn đề em xin hỏi Thầy để file vẫn chạy được khi thêm nhiều sheet (tháng 1-12)
1/Trong sheet Tổng hợp:
Công thức =IF($A5="","",VLOOKUP($A5,INDIRECT("'"&LOOKUP(LEFT($A5,2),"T"&{1,2,3,4,5},"THÁNG "&{"01","02","03","04","TT"})&"'!A5:B120"),2,0))
-> em tạm hiểu là tìm trong bảng dữ liệu Tháng 01 nếu T1, Tháng 02 nếu T2....
và
Công thưc =IF($A5="","",VLOOKUP($B5,INDIRECT("'"&LOOKUP(LEFT($A5,2),"T"&
{1,2,3,4,5},"THÁNG "&
{"01","02","03","04","TT"})&"'!B5:J120"),COLUMNS($A:B),0))
-> với vlookup($B5 và columns($A:B) thì em chưa hiểu
2/Với sheet tổng hợp không còn dùng cột X2:X6 nhưng dùng cho sheet phiếu thanhtoán thì em có thể chuyển nó sang sheet thanh toán cho tiện được không?
3/Sheet tổng hợp với 2 hàm chính trên, em sẽ chèn thêm số tương ứng khi có thêm các sheet tháng 6,7,8 được không Thầy?
4/Trong sheet Thanh Toán: Cell $M$1
=IF(SUMPRODUCT(COUNTIF(INDIRECT("'"&wks&"'!a5:ak120"),$K$48)),"'"&LOOKUP(2,1/COUNTIF(INDIRECT("'"&wks&"'!a5:ak120"),$K$48),wks)&"'!A5:AK120","")
-> em thấy khi K48 là T1-** thì M1 có tên của tháng 01....
và các cell của Sheet thanh toán
Dùng =IF($M$1="","",VLOOKUP($K$48,INDIRECT(Data),4,0)) với (Data) là $M$1
-> chỉ lọc dữ liệu trong bảng theo tên sheet $M$1
----------------------
Em có vấn để nhỏ xin Thầy giúp nữa là:
khi $K$48 giá trị "" thì ô trong sheet tham chiếu sẽ hiển thị N/A vì ô $M$1 vẫn hiển thi thángtt
có cách nào để không bị như thế không ạ?
-> em hỏi vì em áp dụng công thức của Thầy để chèn thêm ô lấy dữ liệu của sheet khác cũng hiển thị trên phiếu thanh toán đó (ô F39, F40,F41), nhưng trường hợp này không phải lúc nào cũng dùng, nên khi không ghi gì vào ô đó thì ô tham chiếu báo lỗi N/A
-> cách giải quyết là em sữa từng ô tham chiếu $M$1 thành $K$48.
=IF($k$48="","",VLOOKUP($k$48,INDIRECT(Data),34,0))
------------
=IF(SUMPRODUCT(COUNTIF(INDIRECT("'"&wks&"'!a5:ak120"),$K$48)),"'"&LOOKUP(2,1/COUNTIF(INDIRECT("'"&wks&"'!a5:ak120"),$K$48),wks)&"'!A5:AK120","")
có cách nào để hàm này = "" nếu K48 là trống không thưa Thầy?
Chân thành cảm ơn Thầy và GPE!