Cách tìm dòng cuối của bảng Table trong Excel

Chức năng Table Data là một chức năng rất hay trong Excel, tuy nhiên nó cũng đem lại nhiều yêu cầu phức tạp hơn khi sử dụng. Một trong số đó là việc sử dụng VBA trên bảng Table Data.

Trong bài học này chúng ta cùng tìm hiểu việc sử dụng VBA để tìm dòng cuối cùng có chứa dữ liệu trong Table Data.

Ví dụ: chúng ta có bảng dữ liệu như sau:

Để chuyển bảng này về dạng Table Data thì chúng ta chọn toàn bộ bảng, sau đó chọn Insert>Table> Trong bảng Create Table thì bạn chú ý đánh thêm dấu chọn vào ô My table has headers (Bảng có bao gồm tiêu đề) => Bấm OK

Bây giờ chúng ta cùng tìm hiểu một vài ứng dụng VBA tìm dòng cuối để xem nó hoạt động thế nào trong môi trường VBA

1. Phương pháp End(xlUp) thông thường

Đây là phương pháp khá thông dụng trong VBA để tìm dòng cuối của  1 vùng dữ liệu.

Cách viết thường gặp là:

Tên Sheet.Cells(Rows.Count, Số cột).End(xlUp).Row

  • Tên Sheet: Bạn muốn làm việc tại sheet nào thì sử dụng tên sheet đó
  • Rows.count: Đếm số hàng
  • Số cột: Bạn muốn đếm trong cột nào thì sử dụng số cột đó
  • End(xlUp).Row : tính từ toàn bộ bảng số dòng của bảng tính tính ngược lên phía trên tới dòng gần nhất có chứa dữ liệu

Kiểm tra cách viết này với Table Data như sau:

Chúng ta có được kết quả là dòng thứ 13

Nhưng khi xóa bớt 1 vài dữ liệu trong bảng Table, ví dụ như xóa dữ liệu tại dòng 11, 12, 13 thì kết quả vẫn ra 13

=> Việc ghi nhận dòng cuối theo cách này được hiểu là tới dòng cuối của bảng Table đang áp dụng, không phụ thuộc phía trong nó có dữ liệu hay không

2. Phương pháp End(xlUp) / End(xlDown) dùng riêng với Table

Đặt tên Table ví dụ của chúng ta là TableTest

Trong cách viết dùng riêng với Table, chúng ta có thể sử dụng cách viết:

Tên sheet.Range(“Tên table”).End(xlUp).Row

Tên sheet.Range(“Tên table”).End(xlDown).Row

Chúng ta cùng kiểm tra kết quả của từng trường hợp:

Cách sử dụng End(xlUp) cho chúng ta kết quả = 2

Cách sử dụng End(xlDown) cho chúng ta kết quả = 10

Như vậy chúng ta có thể thấy cách sử dụng xlDown sẽ cho chúng ta đúng dòng cuối cần tìm trong Table

Ngay cả khi có dữ liệu bên ngoài table thì vẫn cho ra kết quả là dòng cuối trong Table, bởi câu lệnh trên chỉ xét trong vùng bảng Table

Tuy nhiên nếu dòng cuối có chứa dữ liệu bị ẩn đi (chức năng Hide Row) thì câu lệnh trên sẽ không tính với các dòng bị ẩn, và nếu có dòng trống nằm xen giữa các nội dung trong bảng thì cách này chỉ tìm đến vị trí dòng trống xen giữa đó mà thôi.

3. Phương pháp Range.Find

Đây là phương pháp được những người có nhiều kinh nghiệm sử dụng VBA ưa thích, bởi nó khắc phục được hầu hết các nhược điểm của các phương pháp tìm dòng cuối khác:

  • Có dòng trống xen kẽ ở trong bảng
  • Dòng cuối có chứa công thức nhưng kết quả là rỗng

Trong hình trên, ở 2 ô C4 và C5 đã áp dụng cách sử dụng tìm dòng cuối theo phương pháp Range.Find

C4: Tìm giá trị khác rỗng trong bảng TableTest, đối tượng tìm kiếm là Value

C5: Tìm giá trị khác rỗng trong bảng TableTest, đối tượng tìm kiếm là Formulas, tính cả ô chứa công thức mà bằng rỗng

Mặc dù phương pháp này khá dài nhưng nó giúp chúng ta khắc phục được nhiều nhược điểm hay gặp, giúp làm việc trên Table Data một cách hiệu quả hơn.

Tùy từng trường hợp mà chúng ta có thể sử dụng phương pháp phù hợp để đạt được mục đích.

Tài liệu tham khảo: https://fastexcel.wordpress.com/

Còn vô vàn ứng dụng nữa mà khi thực hiện ở VBA sẽ giúp bạn tiết kiệm thời gian rất nhiều, qua đó tăng hiệu quả công việc và hiệu suất làm việc.

Để có thể học VBA một cách đầy đủ, có hệ thống, bạn hãy tham gia khoá học VBA101 – VBA cơ bản dành cho người mới bắt đầu của hệ thống Học Excel Online. Hiện nay hệ thống đang có nhiều ưu đãi khi bạn đăng ký khóa học này. Chi tiết xem tại: