Excel là công cụ không thể thiếu đối với dân văn phòng, đặc biệt là trong việc xử lý dữ liệu. Việc lọc dữ liệu trên một sheet Excel thì dễ như trở bàn tay với hàm FILTER
. Nhưng nếu bạn cần lọc dữ liệu trên hàng chục, thậm chí hàng trăm sheet Excel cùng lúc thì sao? Ngồi lọc từng sheet một thì chắc chắn sẽ “tốn cả thanh xuân”. Đừng lo, bài viết này sẽ hướng dẫn bạn cách lọc dữ liệu trên nhiều sheet Excel cùng lúc chỉ trong vài nốt nhạc, giúp bạn tiết kiệm thời gian và nâng cao hiệu suất công việc.
Thực tế, Excel không hỗ trợ trực tiếp việc lọc dữ liệu trên nhiều sheet cùng lúc. Tuy nhiên, với một chút “ma thuật” từ VBA (Visual Basic for Applications), bạn có thể dễ dàng thực hiện điều này. Hãy cùng tôi khám phá nhé!
Tại sao cần lọc dữ liệu trên nhiều sheet Excel?
Trong công việc, chúng ta thường gặp phải tình huống cần tổng hợp và phân tích dữ liệu từ nhiều nguồn khác nhau. Dữ liệu này có thể được lưu trữ trên nhiều sheet Excel, mỗi sheet đại diện cho một tháng, một phòng ban, một khu vực, v.v… Ví dụ, bạn là một chuyên gia phân tích dữ liệu bán hàng và cần lọc ra tất cả các đơn hàng của sản phẩm “KTE” trong cả năm. Nếu dữ liệu của mỗi tháng được lưu trên một sheet riêng biệt, việc lọc thủ công trên từng sheet sẽ rất mất thời gian và công sức. Chính vì vậy, việc lọc dữ liệu trên nhiều sheet Excel cùng lúc là một kỹ năng vô cùng hữu ích, giúp bạn tối ưu hóa quy trình làm việc.
Hướng dẫn lọc dữ liệu trên nhiều sheet Excel bằng VBA
Giả sử bạn có bốn sheet Excel, mỗi sheet chứa dữ liệu bán hàng của một quý. Bạn muốn lọc ra tất cả các sản phẩm “KTE” trên cả bốn sheet này. Hãy làm theo các bước sau:
Bước 1: Mở cửa sổ VBA Editor
Nhấn tổ hợp phím Alt + F11
để mở cửa sổ Microsoft Visual Basic for Applications.
Bước 2: Thêm một Module mới
Trong cửa sổ VBA Editor, chọn Insert
> Module
.
Bước 3: Dán mã VBA
Sao chép đoạn mã VBA sau và dán vào Module vừa tạo:
Sub LocDuLieuNhieuSheet()
Dim xWs As Worksheet
On Error Resume Next
For Each xWs In Worksheets
xWs.Range("A1").AutoFilter 1, "=KTE"
Next
End Sub
Bước 4: Chạy mã VBA
Nhấn phím F5
hoặc click vào nút Run
để chạy mã VBA.
Vậy là xong! Chỉ với vài thao tác đơn giản, bạn đã lọc được tất cả các sản phẩm “KTE” trên cả bốn sheet Excel cùng lúc.
Giải thích mã VBA
Đoạn mã VBA trên hoạt động như sau:
Sub LocDuLieuNhieuSheet()
: Khai báo tên của thủ tục VBA.Dim xWs As Worksheet
: Khai báo biếnxWs
để đại diện cho mỗi sheet trong Workbook.On Error Resume Next
: Bỏ qua lỗi nếu có sheet nào đó không có dữ liệu hoặc không có cột A.For Each xWs In Worksheets
: Vòng lặp duyệt qua tất cả các sheet trong Workbook.xWs.Range("A1").AutoFilter 1, "=KTE"
: Áp dụng bộ lọc AutoFilter cho cột A (cột đầu tiên) với tiêu chí là “KTE”.Next
: Chuyển sang sheet tiếp theo.End Sub
: Kết thúc thủ tục VBA.
Tùy chỉnh mã VBA
Bạn có thể tùy chỉnh mã VBA để phù hợp với nhu cầu của mình.
- Thay đổi cột lọc: Thay đổi
A1
thành ô đầu tiên của cột bạn muốn lọc. Ví dụ, nếu muốn lọc theo cột B, hãy sử dụngB1
. - Thay đổi tiêu chí lọc: Thay đổi
"=KTE"
thành tiêu chí lọc bạn muốn. Ví dụ, để lọc các giá trị lớn hơn 50 trong cột B, hãy sử dụng">50"
. Để lọc các giá trị chứa chữ “ABC”, hãy sử dụng"*ABC*"
. - Thay đổi số cột: Số
1
trongAutoFilter 1
đại diện cho số thứ tự của cột được lọc. Nếu bạn lọc theo cột B (cột thứ hai), hãy thay đổi thành2
.
Ví dụ: để lọc các đơn hàng có số lượng lớn hơn 100 trong cột C (cột thứ ba) trên tất cả các sheet, hãy sử dụng đoạn mã sau:
Sub LocSoLuongLonHon100()
Dim xWs As Worksheet
On Error Resume Next
For Each xWs In Worksheets
xWs.Range("C1").AutoFilter 3, ">100"
Next
End Sub
Kết luận
Lọc dữ liệu trên nhiều sheet Excel cùng lúc bằng VBA là một kỹ năng vô cùng hữu ích, giúp bạn tiết kiệm thời gian và nâng cao hiệu suất công việc. Hy vọng bài viết này đã cung cấp cho bạn những kiến thức cần thiết để áp dụng vào công việc thực tế. Chúc các bạn thành công!
FAQ
1. Tôi có thể lưu mã VBA này để sử dụng lại sau này không?
Có, bạn có thể lưu mã VBA trong Module và sử dụng lại bất cứ khi nào cần.
2. Nếu tôi có rất nhiều sheet, việc chạy mã VBA có mất nhiều thời gian không?
Thời gian chạy mã VBA phụ thuộc vào số lượng sheet và lượng dữ liệu trên mỗi sheet. Nếu bạn có rất nhiều dữ liệu, việc chạy mã VBA có thể mất một chút thời gian.
3. Tôi có thể lọc dữ liệu dựa trên nhiều tiêu chí cùng lúc không?
Có, bạn có thể sử dụng AutoFilter
với nhiều tiêu chí bằng cách thêm các đối số vào hàm. Tuy nhiên, việc này sẽ phức tạp hơn một chút và bạn cần tìm hiểu thêm về cách sử dụng hàm AutoFilter
.
4. Làm thế nào để bỏ lọc dữ liệu sau khi đã lọc?
Bạn có thể sử dụng mã VBA sau để bỏ lọc dữ liệu trên tất cả các sheet:
Sub BoLocDuLieu()
Dim xWs As Worksheet
On Error Resume Next
For Each xWs In Worksheets
xWs.AutoFilterMode = False
Next
End Sub
5. Tôi gặp lỗi khi chạy mã VBA, tôi nên làm gì?
Hãy kiểm tra lại kỹ mã VBA, đảm bảo bạn đã thay đổi các tham số cho phù hợp với dữ liệu của mình. Nếu vẫn gặp lỗi, hãy kiểm tra xem dữ liệu của bạn có đúng định dạng không và thử chạy lại mã VBA.