Hướng dẫn sử dụng hàm UBound trong VBA để ghép các cột không liền kề

Nội dung được viết bởi Ngọc Diệp

Trong Excel, ta có thể dễ dàng copy paste các cột liền kề sang một phạm vi mới trong trang tính. Vậy còn với các cột không liền kề thì phải thao tác như thế nào? Trong bài viết ngày hôm nay, Gitiho sẽ giới thiệu đến các bạn hàm UBound trong VBA và cách sử dụng hàm này để tách các cột không liền kề sang phạm vi mới trong trang tính Excel.

Cách sử dụng hàm UBound trong VBA ghép các cột Excel

Trước khi học code VBA Excel thực hiện thao tác tách và ghép các cột không liền kề, chúng ta cần nắm rõ cách thức hoạt động của VBA. Nếu bạn chưa hiểu về chức năng này thì hãy tìm hiểu để sử dụng kiến thức bài viết hiệu quả nhất nhé.

Công thức hàm UBound trong VBA

Hàm UBound trong VBA có chức năng trả về kích thước của mảng với công thức như sau:

Ubound (arrayname, [dimension])

Trong đó:

  • arrayname là tên gọi của mảng biến số VBA Excel theo quy ước đặt tên biến chuẩn. Đây là đối số bắt buộc.
  • [dimension] là một số nguyên thể hiện kích thước theo ràng buộc phía trên của phạm vi. Chúng ta có thể sử dụng số 1 cho kích thước đầu tiên, số 2 cho lần thức hai, và tương tự với các số nguyên khác. Đây là đối số tùy chọn, nếu đối số bị bỏ qua thì Excel tự mặc định số 1.

Nếu bạn muốn hiểu rõ hơn về hàm Ubound và các hàm khác trong VBA, bạn có tham khảo các khóa học VBA Excel online sau tại Gitiho:

Cách sử dụng hàm UBound trong VBA ghép các cột Excel

Về bản chất, việc sử dụng hàm UBound trong VBA của chúng ta sẽ copy paste các cột Excel bằng cách thay đổi cấu trúc của mảng dữ liệu. Chúng ta sẽ tìm hiểu thao tác này qua một ví dụ cụ thể dưới đây.

Hướng dẫn sử dụng hàm UBound trong VBA để ghép các cột không liền kề

Trong file Excel, chúng ta có một kho dữ liệu khổng lồ lên đến 349.000 dòng. Công việc cần làm là copy dữ liệu từ các cột A, B, C, E, F, G và dán vào phạm vi mới theo thứ tự hiển thị cột A, C, E, G, F, B.

Để làm được điều này, chúng ta mở cửa sổ VBA Excel bằng cách vào tab Developer > nhóm Code > Visual Basic. Sau khi tạo một Module mới, chúng ta điền vào đó bảng code sau đây:

Sub Resize2Darr()
    Dim InputArr As Variant, ColExport As Variant, ColVar As Variant, I As Long
    InputArr = Sheet1.Range("A1:G" & Sheet1.Cells(Sheet1.Rows.Count, "A").End(xlUp).Row).Value
    ColExport = [{1,3,5,7,6,2}]
    ReDim ColVar(1 To UBound(InputArr, 1), 1 To 1)
        For I = LBound(InputArr, 1) To UBound(InputArr, 1)
            ColVar(I, 1) = I 'Dien so thu tu
        Next
    Sheet1.Range("K1").Resize(UBound(InputArr, 1), UBound(ColExport, 1)) = Application.Index(InputArr, ColVar, ColExport)
End Sub

Trong đó:

  • Tại dòng ColExport, chúng ta nhập thứ tự các cột Excel cần hiển thị mới.
  • Tại công thức hàm UBound trong VBA, kích thước phạm vi mảng được xác định với kích thước là 1.

Chúng ta đóng cửa sổ VBA Excel và quay lại giao diện trang tính. Tại đây, chúng ta nhấn vào ô đầu tiên trong phạm vi đặt dữ liệu mới và chạy Macro Resize2Darr.

Kết quả trang tính Excel sẽ hiển thị như sau:

Hướng dẫn sử dụng hàm UBound trong VBA để ghép các cột không liền kề

Các cột A, B, C, E, F, G tại bảng dữ liệu ban đầu đã được sắp xếp lại theo thứ tự mới A, C, E, G, F, B tại vị trí cột K đến cột P.

Xem thêm: Hướng dẫn từng bước tạo Macro trong Excel

Tổng kết

Bằng cách sử dụng hàm UBound trong VBA, chúng ta đã có thể viết một code VBA Excel giúp copy paste các cột không liền kề trong Excel theo thứ tự mới. Để học thêm nhiều mẹo hữu ích trong quá trình thao tác với VBA, các bạn hãy đọc thêm các bài viết trên blog Gitiho với chúng mình ngay nhé.

Nếu công việc của bạn liên quan nhiều đến quản lý, phân tích dữ liệu và làm báo cáo trên bảng tính thì giỏi Excel thôi chưa đủ. Nếu chỉ dùng Excel, bạn sẽ thường xuyên phải OT đến mỗi kỳ làm báo cáo, stress vì sai dữ liệu do nhập thủ công, hay gặp vấn đề các hàm load chậm do dữ liệu quá nặng,...

Có lẽ bạn đã từng nghe ở đâu đó về công cụ lập trình VBA trên Excel, giúp bạn tiết kiệm tối đa thời gian làm việc nhờ làm báo cáo tự động, phân tích và xử lý số liệu chính xác tuyệt đối, đặc biệt công cần lọ mọ sửa thủ công,...

Nhưng bạn không dám nghĩ một ngày nào đó mình sẽ dùng VBA bởi vì mình không biết lập trình, sửa code và gỡ lỗi mã. Tin mình đi, bạn hoàn toàn có thể thành thạo công cụ này ngay cả khi không giỏi Excel, không biết lập trình với khóa học VBAG01: Tuyệt đỉnh VBA - Tự động hóa Excel với lập trình VBA tại Gitiho.

Tất tần tật những kiến thức từ cơ bản đến nâng cao về cách sử dụng VBA trong Excel sẽ được đề cập khiến mọi thao tác thủ công trên Excel gần như được loại bỏ hoàn toàn. 

Hãy nhấn vào Học thử hoặc Đăng ký ngay để cảm nhận sự “vi diệu” mà VBA mang lại cho công việc của bạn nhé!

0/5 - (0 bình chọn)

0/5 - (0 bình chọn)

0 thảo luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ thông tin và truyền thông