cảm ơn rất nhiều, đây là vấn đề mà lâu nay mình tìm mãi, một lần nua xin được cảm ơn rất rất nhiềuÐề: Trích lọc Sổ Cái : Dùng Công Thức và Các Hàm Excel
Sorry vì ngày hôm qua kẹt nên không viết bài tiếp được. Hôm nay chúng ta tiếp tục nhé.
Các bạn mở file mẫu ra và để ý thấy rằng NKC bắt đầu từ dòng thứ 9, Sổ Cái bắt dầu từ dòng thứ 11. Trình tự thực hiện như sau :
1/ Tại ô A11 của Sổ Cái, ta gõ công thức :
=IF(OR(NKC!$F9=$D$5;NKC!$G9=$D$5);NKC!$B9;"")
Giải thích : Nếu ô F9 của NKC hoặc ô G9 của NKC có giá trị bằng giá trị của Tài khoản sổ cái(được xác định bằng Validation tại ô D5 của Sổ Cái) thì lấy giá trị ô B9 của NKC điền vào ô A11 của Sổ Cái, nếu không thỏa mãn thì ghi giá trị Null. Công thức này nhằm lấy giá trị của Ngày Ghi Sổ trong NKC điền vào Sổ Cái
2/ Tại ô B11 của Sổ Cái, ta gõ công thức :
=IF(OR(NKC!$F9=$D$5;NKC!$G9=$D$5);NKC!$C9;"")
Giải thích : Tương tự như trên nhằm lấy Số CT của NKC đưa sang Sổ Cái
3/ Tại ô C11 của Sổ Cái, ta gõ công thức :
=IF(OR(NKC!$F9=$D$5;NKC!$G9=$D$5);NKC!$D9;"")
Giải thích ; Tương tự như trên nhằm lấy ngày chứng từ từ NKC đưa sang Sổ Cái
4/ Tại ô D11 của Sổ Cái, ta gõ công thức :
=IF(OR(NKC!$F9=$D$5;NKC!$G9=$D$5);NKC!$E9;"")
Giải thích : Tương tự nhằm lấy dòng diễn giải từ NKC đưa sang Sổ Cái
5/ Tại ô E11 của Sổ Cái, ta gõ công thức :
=IF(NKC!$F9=$D$5;NKC!$G9;IF(NKC!$G9=$D$5;NKC!$F9;""))
Giải thích : Nếu ô F9 của NKC bằng giá trị của Tài khoản sổ cái, thì lấy giá trị ô G9 của NKC ghi vào ô E11 của Sổ Cái. Nếu ô G9 của NKC = TK Sổ Cái thì lấy giá trị ô F9 của NKC ghi vào ô E11 của Sổ Cái. Nếu không thỏa mãn cả hai trường hợp trên thì ghi giá trị Null. Công thức này nhằm lấy giá trị của tài khoản đối ứng của tài khoản Sổ Cái
6/ Tại ô F11 của Sổ Cái, ta gõ công thức :
=IF(NKC!$F9=$D$5;NKC!$H9;0)
Giải thích : Nếu ô F9 của NKC = TK Sổ Cái thì lấy giá trị ô H9 của NKC ghi vào ô F11 của Sổ Cái, nếu không thỏa mãn thì ghi giá tri =0. Công thức này nhằm lấy số tiền Nợ của tài khoản Sổ Cái ghi vào ô F11 của Sổ Cái
7/ Tại ô G11 của Sổ Cái, ta gõ công thức :
=IF(NKC!$G9=$D$5;NKC!$H9;0)
Giải thích ; Tương tự như 6/ nhằm để lấy Số tiền Có của TK Sổ Cái ghi vào ô G11 của Sổ Cái
8/ Copy dòng từ A11:G11 xuống hết dòng 999 của Sổ Cái. Mục đích là để nếu có thay đổi số dòng của NKC thì củng không ảnh hưởng tới số dòng của Sổ Cái
9/ Tại ô D1000 ghi dòng chữ : Phát Sinh Trong Kỳ
10/ Tại ô D1001 ghi dòng chữ : Số Dư Cuối Kỳ
11/ Tại ô F1000 ghi công thức : =SUBTOTAL(9;F11:F999), nhằm lấy tổng số tiền nợ phát sinh của TK Sổ Cái
12/ Tại ô G1000 ghi công thức : =SUBTOTAL(9;G11:G999), nhằm lấy tổng số tiền có phát sinh của TK Sổ Cái
13/ Tại ô F1001 ghi công thức : =IF(F10-G10+F1000-G1000>0;F10-G10+F1000-G1000;0), nhằm lây số dư nợ cuối kỳ của TK Sổ Cái
14/ Tại ô G1001 ghi công thức : =IF(F10-G10+F1000-G1000<0;ABS(F10-G10+F1000-G1000);0), nhằm lấy số dư có cuối kỳ của TK Sổ Cái
14/ Định dạng bảng tính Sổ Cái :
Quét chọn khối A11:A999, C11:C999 định dạng ngày tháng năm dd/mm/yyyy
Quét chọn khối F11:G1001, đinh dạng số, không có số 0 sau dấu phẩy, có dấu phân cách hàng ngàn
15/ Dấu hàng trắng : Đặt vệt sáng của con trỏ vào ô D9, vào Menu Data/Filter/AutoFilter, xuất hiện các mũi tên quay xuống. Chọn mũi tên tại ô D9 và chọn (NonBlanks)
Như vậy là ta đã hoàn thành việc thiết lập công thức tính cho Sổ Cái. Bây giờ muốn lập cho sổ cái nào, bạn chỉ việc chọn TK tại ô D5 bằng Validation, sau đó vào ô D9 để chọn NonBlanks là xong. Để tự động hóa việc chọn này, ta có thể dung một macro đơn giản sau đây :
Nhấn Alt+F11, kich đúp tên Sheet SoCai trong phần bên trái và ghi câu lệnh sau :
Như vậy cứ mổi lần chọn xong TK Sổ Cái ở ô D5 thì bảng tính tự tính và che hàng trắngPHP:Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$D$5" Then Range("D9").Select Selection.AutoFilter Field:=4, Criteria1:="<>" End If End Sub
Các bạn có thể tham khảo file tại đây :
http://www.mediafire.com/?4h3t9cec94abbub
Các bạn tự kiểm tra dung lượng của file này và các file trước rồi tự nhận xét nhé
Thân
mình bị kẹt chỗ không sao tạo được mũi tên lọc chỗ ô D5 tên tài khoản. mọi người giúp mình với ạ.xin cảm ơn mọi người trước ạDear All!
Như vậy là trong các bài trước tôi đã chia sẻ với các bạn về các phương pháp Trích lọc sổ cái bằng VBA. Các bài được post theo trình tự từ dễ tới khó và cũng theo trình tự đó tốc độ xử lý của các file tăng dần. Đó là ;
1/ Trich lọc bằng vòng lặp For…Next
2/ Trích lọc bằng công cụ sẵn có của Ex : Advanced Filter
3/ Trich lọc bằng Find Method
4/ Trích lọc bằng ADO
5/ Trích lọc bằng mảng Array
Có bạn hỏi tôi có còn cách trích lọc nào nữa không?
Xin thưa vẫn còn nhưng vì điều kiện thời gian không cho phép nên hẹn vào dịp khác và trong trường hợp khác.
Có bạn lại hỏi vì sao phải dùng VBA? Vậy tôi dùng các công thức của hàm Ex có được không?
Xin thưa : Dùng VBA là để cho file gọn nhẹ hơn, trich xuất nhanh hơn và file không bị phình to chiếm nhiều bộ nhớ và khi mở file sẽ rất lâu. Dùng công thức và hàm hoàn toàn được nhưng dung lượng file sẽ rất lớn và việc truy xuất nó rất chậm trễ.
Vậy dùng hàm như thế nào trong trường hợp này? Chúng ta cùng xem nhé
Tôi vẫn lấy CSDL của bài cũ và dùng hoàn toàn công thức để thực hiện việc trích lọc này
Nguyên tắc chung của phương pháp này là dùng công thức copy toàn bộ dữ liệu từ NKC sang Sổ cái với tiêu chí là những dòng nào có “dính líu” tới tài khoản sổ cái trong cột TK Nợ và TK Có của NKC thì cho hiện lên, còn nhưng dòng khác chuyển thành ô trắng. Sau khi trích lọc xong thì dùng Autofilter để ẩn các dòng trắng đi, chỉ giữ lại các dòng có dữ liệu thôi. Chúng ta cùng thực hiện nhé
P/S : Sorry. Định viết tiếp nhưng...kẹt rồi. Hẹn gặp lại các bạn vào ngày mai nhé
Thân
Cho mình hỏi sao mình làm nó báo lỗiÐề: Trích lọc Sổ Cái : Dùng Công Thức và Các Hàm Excel
Sorry vì ngày hôm qua kẹt nên không viết bài tiếp được. Hôm nay chúng ta tiếp tục nhé.
Các bạn mở file mẫu ra và để ý thấy rằng NKC bắt đầu từ dòng thứ 9, Sổ Cái bắt dầu từ dòng thứ 11. Trình tự thực hiện như sau :
1/ Tại ô A11 của Sổ Cái, ta gõ công thức :
=IF(OR(NKC!$F9=$D$5;NKC!$G9=$D$5);NKC!$B9;"")
Giải thích : Nếu ô F9 của NKC hoặc ô G9 của NKC có giá trị bằng giá trị của Tài khoản sổ cái(được xác định bằng Validation tại ô D5 của Sổ Cái) thì lấy giá trị ô B9 của NKC điền vào ô A11 của Sổ Cái, nếu không thỏa mãn thì ghi giá trị Null. Công thức này nhằm lấy giá trị của Ngày Ghi Sổ trong NKC điền vào Sổ Cái
2/ Tại ô B11 của Sổ Cái, ta gõ công thức :
=IF(OR(NKC!$F9=$D$5;NKC!$G9=$D$5);NKC!$C9;"")
Giải thích : Tương tự như trên nhằm lấy Số CT của NKC đưa sang Sổ Cái
3/ Tại ô C11 của Sổ Cái, ta gõ công thức :
=IF(OR(NKC!$F9=$D$5;NKC!$G9=$D$5);NKC!$D9;"")
Giải thích ; Tương tự như trên nhằm lấy ngày chứng từ từ NKC đưa sang Sổ Cái
4/ Tại ô D11 của Sổ Cái, ta gõ công thức :
=IF(OR(NKC!$F9=$D$5;NKC!$G9=$D$5);NKC!$E9;"")
Giải thích : Tương tự nhằm lấy dòng diễn giải từ NKC đưa sang Sổ Cái
5/ Tại ô E11 của Sổ Cái, ta gõ công thức :
=IF(NKC!$F9=$D$5;NKC!$G9;IF(NKC!$G9=$D$5;NKC!$F9;""))
Giải thích : Nếu ô F9 của NKC bằng giá trị của Tài khoản sổ cái, thì lấy giá trị ô G9 của NKC ghi vào ô E11 của Sổ Cái. Nếu ô G9 của NKC = TK Sổ Cái thì lấy giá trị ô F9 của NKC ghi vào ô E11 của Sổ Cái. Nếu không thỏa mãn cả hai trường hợp trên thì ghi giá trị Null. Công thức này nhằm lấy giá trị của tài khoản đối ứng của tài khoản Sổ Cái
6/ Tại ô F11 của Sổ Cái, ta gõ công thức :
=IF(NKC!$F9=$D$5;NKC!$H9;0)
Giải thích : Nếu ô F9 của NKC = TK Sổ Cái thì lấy giá trị ô H9 của NKC ghi vào ô F11 của Sổ Cái, nếu không thỏa mãn thì ghi giá tri =0. Công thức này nhằm lấy số tiền Nợ của tài khoản Sổ Cái ghi vào ô F11 của Sổ Cái
7/ Tại ô G11 của Sổ Cái, ta gõ công thức :
=IF(NKC!$G9=$D$5;NKC!$H9;0)
Giải thích ; Tương tự như 6/ nhằm để lấy Số tiền Có của TK Sổ Cái ghi vào ô G11 của Sổ Cái
8/ Copy dòng từ A11:G11 xuống hết dòng 999 của Sổ Cái. Mục đích là để nếu có thay đổi số dòng của NKC thì củng không ảnh hưởng tới số dòng của Sổ Cái
9/ Tại ô D1000 ghi dòng chữ : Phát Sinh Trong Kỳ
10/ Tại ô D1001 ghi dòng chữ : Số Dư Cuối Kỳ
11/ Tại ô F1000 ghi công thức : =SUBTOTAL(9;F11:F999), nhằm lấy tổng số tiền nợ phát sinh của TK Sổ Cái
12/ Tại ô G1000 ghi công thức : =SUBTOTAL(9;G11:G999), nhằm lấy tổng số tiền có phát sinh của TK Sổ Cái
13/ Tại ô F1001 ghi công thức : =IF(F10-G10+F1000-G1000>0;F10-G10+F1000-G1000;0), nhằm lây số dư nợ cuối kỳ của TK Sổ Cái
14/ Tại ô G1001 ghi công thức : =IF(F10-G10+F1000-G1000<0;ABS(F10-G10+F1000-G1000);0), nhằm lấy số dư có cuối kỳ của TK Sổ Cái
14/ Định dạng bảng tính Sổ Cái :
Quét chọn khối A11:A999, C11:C999 định dạng ngày tháng năm dd/mm/yyyy
Quét chọn khối F11:G1001, đinh dạng số, không có số 0 sau dấu phẩy, có dấu phân cách hàng ngàn
15/ Dấu hàng trắng : Đặt vệt sáng của con trỏ vào ô D9, vào Menu Data/Filter/AutoFilter, xuất hiện các mũi tên quay xuống. Chọn mũi tên tại ô D9 và chọn (NonBlanks)
Như vậy là ta đã hoàn thành việc thiết lập công thức tính cho Sổ Cái. Bây giờ muốn lập cho sổ cái nào, bạn chỉ việc chọn TK tại ô D5 bằng Validation, sau đó vào ô D9 để chọn NonBlanks là xong. Để tự động hóa việc chọn này, ta có thể dung một macro đơn giản sau đây :
Nhấn Alt+F11, kich đúp tên Sheet SoCai trong phần bên trái và ghi câu lệnh sau :
Như vậy cứ mổi lần chọn xong TK Sổ Cái ở ô D5 thì bảng tính tự tính và che hàng trắngPHP:Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$D$5" Then Range("D9").Select Selection.AutoFilter Field:=4, Criteria1:="<>" End If End Sub
Các bạn có thể tham khảo file tại đây :
http://www.mediafire.com/?4h3t9cec94abbub
Các bạn tự kiểm tra dung lượng của file này và các file trước rồi tự nhận xét nhé
Thân