Ứng Dụng VBA tối ưu hóa chức năng Trích Lọc

Bài viết này hướng dẫn bạn tạo một ứng dụng có các chức năng sau:

  • Bạn nhập liệu vào Sheet Data tổng các thông tin vào Sheet Data thì chương trình sẽ trích lọc dữ liệu đến từng Sheet chi tiết tương ứng
  • Bạn có thể thêm xóa dữ liệu nhanh chóng và chỉ cần 1 cú click chuột toàn bộ Sheet chi tiết sẽ được cập nhật.

Ứng Dụng VBA tối ưu hóa chức năng Trích Lọc

Trong bài viết này mình sẽ không đề cập đến cách sử dụng 2 công cụ ghi Macro và Advanced mà tập trung vào cách làm ứng dụng thôi nhé. Hẹn các bạn trong những bài viết sau mình sẽ đề cập sâu hơn về 2 công cụ này.

Miêu tả về ứng dụng như sau: Chúng ta sẽ nhập liệu vào Sheet Data thông tin về sản phẩm theo Mã Hàng, Nhóm Hàng và một số thông tin khác như dữ liệu bên dưới sau:

Untitled

Bên cạnh đó chúng ta muốn tạo những Sheet khác chỉ chứa thông của một loại Mã hàng và Nhóm Hàng để xem được chi tiết cũng như muốn trao đổi dữ liệu nhanh chóng.

Các bạn tạo Sheet C555-N1 chỉ chứa dữ liệu tương ứng như bên dưới chính là vùng Criteria range và vùng Copy to của công cụ Advanced Filter

Untitled12356

Các Sheet còn lại bạn copy ra từ Sheet C555-N1 và sửa lại thông tin tương ứng như vậy là chúng ta đã xong bước chuẩn bị.

Để dữ liệu được cập nhật khi được nhập thêm, các bạn sẽ tạo Bảng cho dữ liệu trong Sheet Data.

Quét chọn vùng dữ liệu sau đó  vào Insert -> Table hoặc phím tắt Ctr+T. Check vào nút My table has headers và chọn OK.

Untitledcvvxvx

Bắt tay vào làm Ứng dụng.

Tại Sheet C555-N1 các bạn ghi Macro cho thao tác Advanced Filter theo điều kiện tương ứng.

Untitledghty

Lưu ý: Vì chúng ta đã tạo bảng (Table) cho dữ liệu nên List range sẽ hiện là tên của Table chứ ko còn là vùng địa chỉ nữa.

Sau khi đã ghi Macro xong các bạn nhấn phím tắt Alt + F11 để xem code và mình sẽ thêm vào 1 vài dòng lệnh. (Mình sẽ không đề cập đến thao tác ghi Macro nhé).

Untitled123456

Đây là đoạn code ghi lại thao tác Advanced Filter các sửa lại vùng địa chỉ của mình nếu sai sót trong quá trình ghi.

Hoặc các bạn có thể copy đoạn code này và sửa lại các vủng địa chỉ tương ứng: trong cửa sổ VBA (các bạn nhấn Alt + F11 để mở lên), bạn click chuột phải vào Workbook của mình và Insert -> Module và copy đoạn code sau đó sửa lại các vủng địa chỉ tương ứng

Untitled66666

Code:

Sub Macro3()

Sheets(“Data”).Range(“Table1[#All]”).AdvancedFilter Action:=xlFilterCopy, _

CriteriaRange:=Range(“b3:C4”), CopyToRange:=Range(“B6:J6”), _

Unique:=False

End Sub

Đoạn code này chỉ lọc dữ liệu cho 1 Sheet, sau đây chúng ta sẽ thêm vào 1 dòng lệnh để chương trình chạy tất cả các Sheet.

Code:

Sub Macro3()

    For i = 2 To Worksheets.Count()

    Worksheets(i).Select

Sheets(“Data”).Range(“Table1[#All]”).AdvancedFilter Action:=xlFilterCopy, _

CriteriaRange:=Range(“b3:C4”), CopyToRange:=Range(“B6:J6”), _

Unique:=False

    Next

End Sub

Như vậy là chúng ta đã viết xong chương trình.

Trong File Data của mình các bạn sẽ tạo một Hình Shape và gán Macro của mình vào là có thể sử dụng.

Click chuột phải vào hình Shape và chọn Assign Macro, xuất hiện hộp thoại bạn chọn Macro của mình và OK

Untitled777

Lưu ý: các  phải bạn save lại dưới dạng Macro – Enable Workbook để chương trình không bị xóa.

Mỗi lần thêm xóa dữ liệu vào Sheet Data bạn chỉ cần click vào Nút cập nhật toàn bộ, toàn bộ Sheet chi tiết sẽ được cập nhật.

Kết quả sau khi Cick nút Cập nhật toàn bộ.

Untitled999

File chương trình đính kèm.

trichloc

 

Chi tiết liên hệ:

TRUNG TÂM ĐÀO TẠO TIN HỌC TRÍ TUỆ VIỆT

Hồ Chí Minh:
CS1: 276 Phan Đình Phùng, Phường 1 – Quận Phú Nhuận – TP.HCM
CS2: 213 đường 3/2, Phường 9 – Quận 10 – TP.HCM
CS3: 451 Điện Biên Phủ, Phường 25 – Quận Bình Thạnh

ĐT: 028.62.695.695  / Hotline: 0902.936.936

Rate this post
0902.936.936