25/05/2018, 23:34

Phân biệt các mảng trong vùng dữ liệu không đồng nhất bằng VBA

Bạn đã từng gặp rắc rối khi làm việc với vùng dữ liệu không đồng nhất trong Excel chưa? Giả sử như bạn nhận được 1 file excel của người khác gửi mà dữ liệu có những dòng trống xen kẽ như sau: Với những dòng trống xen kẽ này sẽ khiến bảng dữ liệu bị chia thành các các mảng nhỏ. Vậy làm cách ...

Bạn đã từng gặp rắc rối  khi làm việc với vùng dữ liệu không đồng nhất trong Excel chưa? Giả sử như bạn nhận được 1 file excel của người khác gửi mà dữ liệu có những dòng trống xen kẽ như sau:

Với những dòng trống xen kẽ này sẽ khiến bảng dữ liệu bị chia thành các các mảng nhỏ. Vậy làm cách nào để có thể thao tác đồng thời tới các mảng này? Ví dụ như việc  tô màu xanh ở cột A cho tất cả các mảng này, bỏ qua các dòng trống xen kẽ.

Trong VBA có cho phép chúng ta làm điều đó với đối tượng AREAS như sau:

Bước 1: Xác định toàn bộ vùng dữ liệu bằng cách xác định hai yếu tố:

  • Dòng bắt đầu
  • Dòng cuối có chứa dữ liệu

Bước 2: Tạo vòng lặp để xét từng mảng. Mỗi mảng được xác định bởi:

Tên sheet.Tên vùng.Specialcells(dạng  dữ liệu trong mảng).Areas

Các dạng dữ liệu trong SpecialCells thường gặp là:

  • xlCellTypeVisible : những giá trị còn xuất hiện (không bị ẩn)
  • xlCellTypeConstants : giá trị là hằng số cụ thể
  • xlCellTypeFormulas : có chứa công thức

Bước 3: Nội dung cần thực  hiện với các mảng dữ liệu được đặt trong vòng lặp

Câu lệnh VBA như sau:

View the code on Gist.

Đặt công thức vào từng mảng

Tương tự như trên chúng ta có thể thực hiện việc  đặt công thức 1 cách nhanh chóng và dễ dàng với các mảng này như sau:

View the code on Gist.

* Chú ý:

Tại cột E có chứa công thức nên sử dụng đối tượng xlCellTypeFormulas trong SpecialCells

Kết quả thu được khi thực hiện 2 câu lệnh trên như sau:

Các bạn có thể tải về file mẫu tại đây để tham khảo: Tải tài liệu kèm theo

Chúc các bạn học tốt cùng Học Excel Online!

0